Junior — Middle
Is het aantal gemaakte goroutines gerelateerd aan het aantal cores in de processor?
sobes.tech AI
Antwoord van AI
Het aantal goroutines dat in Go wordt gemaakt, is niet direct gerelateerd aan het aantal CPU-kernen. Je kunt er veel maken — het zijn lichte threads beheerd door de Go-runtime, en hun aantal wordt voornamelijk beperkt door het beschikbare geheugen en de logica van het programma.
Het aantal kernen beïnvloedt het aantal systeemthreads dat gelijktijdig kan worden uitgevoerd, en de parameter GOMAXPROCS, die het maximale aantal threads bepaalt dat goroutines parallel uitvoert. Maar het aantal goroutines ligt meestal veel hoger dan het aantal kernen, omdat ze efficiënt worden gepland en binnen de runtime worden geschakeld.
Voorbeeld:
runtime.GOMAXPROCS(4) // Gebruik 4 kernen
for i := 0; i < 1000; i++ {
go func(n int) {
fmt.Println("Goroutine", n)
}(i)
}
time.Sleep(time.Second)
Hier worden 1000 goroutines gemaakt, terwijl er maar 4 kernen zijn.