Sobes.tech
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.