Junior — Middle
Quelles fonctions la structure WaitGroup fournit-elle dans le langage Go pour la synchronisation des goroutines?
sobes.tech IA
Réponse de l'IA
Dans le langage Go, la structure sync.WaitGroup est utilisée pour synchroniser plusieurs goroutines, permettant à la goroutine principale d’attendre la fin des autres.
Méthodes principales de WaitGroup :
-
Add(delta int)— augmente ou diminue le compteur des goroutines attendues. Généralement appelé avant de lancer les goroutines. -
Done()— diminue le compteur de 1, appelé à la fin du travail de la goroutine. -
Wait()— bloque l’exécution jusqu’à ce que le compteur atteigne zéro.
Exemple d’utilisation :
var wg sync.WaitGroup
wg.Add(3) // attend 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signaler la fin
fmt.Println("Goroutine", id)
}(i)
}
wg.Wait() // attend la fin de toutes les goroutines
fmt.Println("Toutes les goroutines sont terminées")
Ainsi, WaitGroup aide à coordonner l’exécution parallèle et garantit que le programme ne se termine pas prématurément.