Junior — Middle
Quelle est la quantité maximale de goroutines pouvant être lancées simultanément sans problèmes importants pour le système?
sobes.tech IA
Réponse de l'IA
En Go, le nombre maximum de goroutines pouvant être exécutées simultanément dépend des ressources du système (mémoire vive, temps CPU) et de la nature des tâches qu'elles effectuent. Théoriquement, il est possible de lancer des centaines de milliers, voire des millions de goroutines, car elles sont très légères comparées aux threads du système d'exploitation.
Cependant, en pratique :
- Si les goroutines utilisent activement le CPU, un nombre trop élevé entraînera une baisse des performances en raison du changement de contexte.
- Si les goroutines se bloquent en attente d'entrées/sorties ou attendent des événements, il peut y en avoir beaucoup plus sans problèmes majeurs.
Habituellement, dans les applications réelles, on lance de quelques centaines à quelques milliers de goroutines sans problème. En cas de besoin de mise à l'échelle, il est conseillé de profiler l'application et de surveiller la consommation de mémoire et la charge CPU.
Exemple de création d'un grand nombre de goroutines :
for i := 0; i < 100000; i++ {
go func(n int) {
// un travail quelconque
fmt.Println(n)
}(i)
}