Sobes.tech
Senior

As-tu décidé d'écrire WaitGroup parce qu'un canal est apparu ou parce que tu as décidé d'écrire des goroutines pour quelque chose?

sobes.tech IA

Réponse de l'IA

WaitGroup en Go est utilisé pour attendre la fin d’un groupe de goroutines.

Si vous avez plusieurs goroutines effectuant des tâches en parallèle et que vous souhaitez attendre leur fin avant de continuer, WaitGroup est un outil pratique.

Les canaux et les goroutines sont des mécanismes différents. Un canal sert à la communication et à la synchronisation entre goroutines, tandis que WaitGroup sert à attendre leur fin.

Par exemple, si vous avez des goroutines pour effectuer des tâches et que vous souhaitez attendre qu’elles se terminent toutes, vous utilisez WaitGroup :

var wg sync.WaitGroup
wg.Add(3) // attend 3 goroutines

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done()
        // travail de la goroutine
        fmt.Println("Goroutine", id, "terminée")
    }(i)
}

wg.Wait() // attend la fin de toutes les goroutines

Ainsi, WaitGroup est utilisé précisément parce qu’il y a des goroutines à synchroniser à leur fin, et non à cause de l’apparition de canaux.