Sobes.tech
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.