Senior
Waar gaan goroutines na het maken: naar de lokale of globale wachtrij van de Go-planner?
sobes.tech AI
Antwoord van AI
Bij het maken van een goroutine in Go wordt deze geplaatst in de lokale planning wachtrij (local run queue), die behoort tot een specifieke M (machine, systeemthread).
De Go-runtime gebruikt een M:N-model, waarbij M de systeemthreads zijn en G de goroutines. Elke M heeft zijn eigen lokale wachtrij van goroutines voor uitvoering. Als de lokale wachtrij overloopt of leeg is, kan de planner goroutines balanceren tussen de lokale en de globale wachtrij.
Op deze manier wordt de nieuwe goroutine eerst geplaatst in de lokale wachtrij van de planner, wat een efficiënt gebruik van de cache van de processor mogelijk maakt en de kosten van contextswitching vermindert.