Senior
Que se passera-t-il si on lance 5 trillions de goroutines ? Comment optimiser ?
sobes.tech IA
Réponse de l'IA
Lancer 5 billions de goroutines n’est pas réalisable en pratique en raison des limitations de mémoire et de ressources du système d’exploitation. Les goroutines sont légères, mais chacune nécessite une pile (par défaut ~2KB), ce qui entraînera une exhaustion de la mémoire.
Ce qui se passera :
- La mémoire s’épuisera rapidement, et le programme échouera avec une erreur.
- La performance chutera fortement en raison du changement de contexte.
Comment optimiser :
- Utiliser un pool de goroutines (worker pool), en limitant le nombre de goroutines en fonctionnement simultané.
- Diviser les tâches en lots plus petits et les traiter séquentiellement ou en parallèle avec un contrôle du nombre de goroutines.
- Utiliser des canaux pour gérer la charge et la synchronisation.
- Revoir la logique : peut-être que trop de parallélisme n’est pas nécessaire.
Exemple de pool de goroutines :
const workerCount = 100
jobs := make(chan Job)
for i := 0; i < workerCount; i++ {
go func() {
for job := range jobs {
process(job)
}
}()
}
for _, job := range allJobs {
jobs <- job
}
close(jobs)
Ainsi, nous contrôlons le nombre de goroutines et évitons l’épuisement des ressources.