Junior — Middle
Wat is het maximale aantal goroutines dat gelijktijdig in een toepassing kan worden gestart?
sobes.tech AI
Antwoord van AI
In Go is er geen strikte beperking op het maximale aantal goroutines dat gelijktijdig kan worden uitgevoerd. Theoretisch kunnen ze heel veel zijn — tientallen, honderden en soms miljoenen, afhankelijk van de systeembronnen (geheugen, CPU).
Goroutines zijn zeer lichtgewicht in vergelijking met OS-threads, omdat ze gebruik maken van een dynamische stack die naar behoefte groeit.
De praktische beperking hangt echter af van:
- De beschikbare hoeveelheid geheugen (elke goroutine neemt minimaal enkele kilobytes in beslag).
- De logica van de applicatie en de synchronisatie tussen goroutines.
- De belasting op de Go-planner.
Voorbeeld van het starten van een groot aantal goroutines:
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
const n = 100000
wg.Add(n)
for i := 0; i < n; i++ {
go func(i int) {
defer wg.Done()
// eenvoudige taak
_ = i * 2
}(i)
}
wg.Wait()
fmt.Println("Alle goroutines zijn voltooid")
}
Dus, de beperking is meer praktisch dan systeemgebonden.