Look at this well known image taken from morsmachine.dk/go-scheduler
The gray lists are local runqueues of P. If this queue get empty they will be filled with go routines from the global runqueue.
The Question is, who fills the local runqueue of P?
Scheduler, without synchronisation or every P do it for himself (mutex)?
P.S. The article omits this information.