Junior — Middle
Hoe wordt de verdeling van vier goroutines over de vier processor cores gedaan bij hun start?
sobes.tech AI
Antwoord van AI
In Go verdeelt de Goroutine scheduler de goroutines over de systeemthreads (M), die op hun beurt gekoppeld zijn aan de CPU-kernen.
Als je 4 goroutines en 4 CPU-kernen hebt, kan de scheduler bij het starten elke goroutine op een aparte kern verdelen, wat parallelle uitvoering mogelijk maakt. Dit is mogelijk als de omgevingsvariabele GOMAXPROCS is ingesteld op 4 (standaard, in moderne versies van Go, gelijk aan het aantal beschikbare kernen).
Voorbeeld:
runtime.GOMAXPROCS(4) // stelt het aantal beschikbare threads in op 4
for i := 0; i < 4; i++ {
go func(id int) {
fmt.Printf("Goroutine %d gestart\n", id)
// werk
}(i)
}
De Go scheduler zal de goroutines verdelen over de threads, die op verschillende kernen kunnen worden uitgevoerd, wat een efficiënt gebruik van multiprocessorsystemen mogelijk maakt. De exacte verdeling hangt echter af van de systeembelasting en de interne scheduler.