Middle+
Parlez-moi plus en détail de WaitGroup : comment ça fonctionne, que font Add, Done, Wait ?
sobes.tech IA
Réponse de l'IA
WaitGroup en Go est utilisé pour attendre la fin d'un groupe de goroutines.
- Add(n int) — augmente le compteur de n, généralement appelé avant de lancer des goroutines.
- Done() — diminue le compteur de 1, appelé dans la goroutine après la fin de son travail.
- Wait() — bloque l'exécution jusqu'à ce que le compteur atteigne zéro, c'est-à-dire que toutes les goroutines aient appelé Done.
Exemple:
var wg sync.WaitGroup
wg.Add(3) // attend 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done()
fmt.Println("Goroutine", id, "terminée")
}(i)
}
wg.Wait() // attend que toutes les goroutines se terminent
fmt.Println("Toutes les goroutines sont terminées")
Ainsi, WaitGroup aide à synchroniser des tâches parallèles et à attendre leur fin.