Junior — Middle
Onderbreekt de planner van het besturingssysteem verplicht de uitvoering van een goroutine?
sobes.tech AI
Antwoord van AI
Nee, de scheduler van het besturingssysteem pauzeert niet noodzakelijkerwijs de uitvoering van een goroutine in Go. Goroutines zijn lichte threads die worden beheerd door de Go-runtime, niet direct door het besturingssysteem.
De Go-runtime plant zelf de uitvoering van goroutines op systeemthreads (M:N planning). Goroutines kunnen worden gepauzeerd en hervat in de volgende gevallen:
- Wanneer een goroutine wacht op invoer/output of blokkeert bij synchronisatie.
- Wanneer een goroutine expliciet de controle overgeeft (bijvoorbeeld, aanroep
runtime.Gosched()). - Wanneer het nodig is om de belasting tussen de threads te balanceren.
Dus, de overgang tussen goroutines gebeurt op een coöperatieve wijze en onder controle van de Go-runtime, niet verplicht door het besturingssysteem.