Junior — Middle
Wat is het maximale aantal goroutines dat gelijktijdig kan worden gestart zonder aanzienlijke problemen voor het systeem?
sobes.tech AI
Antwoord van AI
In Go hangt het maximale aantal gelijktijdig uitgevoerde goroutines af van de systeembronnen (RAM, CPU-tijd) en de aard van de taken die ze uitvoeren. Theoretisch kunnen honderdduizenden of zelfs miljoenen goroutines worden gestart, omdat ze zeer lichtgewicht zijn in vergelijking met OS-threads.
In de praktijk:
- Als goroutines actief de CPU gebruiken, kan een te groot aantal leiden tot prestatieverlies door context-switching.
- Als goroutines blokkeren op invoer/uitvoer of wachten op gebeurtenissen, kunnen er veel meer zijn zonder noemenswaardige problemen.
Gewoonlijk worden in echte toepassingen enkele honderden tot enkele duizenden goroutines zonder problemen gestart. Bij schaalvergroting is het aan te raden de toepassing te profileren en het geheugenverbruik en de CPU-belasting te monitoren.
Voorbeeld van het maken van veel goroutines:
for i := 0; i < 100000; i++ {
go func(n int) {
// wat werk
fmt.Println(n)
}(i)
}