WaitGroups
Contexte
Section intitulée « Contexte »sync.WaitGroup attend qu’un ensemble de goroutines ait terminé. Utilisez Add pour définir le compteur, Done pour le décrémenter, et Wait pour bloquer jusqu’à ce qu’il atteigne zéro.
Démarrer trois goroutines et attendre qu’elles se terminent toutes.
Code exemple
Section intitulée « Code exemple »package main
import ( "fmt" "sync" "time")
func worker(id int, wg *sync.WaitGroup) { defer wg.Done() fmt.Printf("Worker %d démarre\n", id) time.Sleep(time.Second) fmt.Printf("Worker %d terminé\n", id)}
func main() { var wg sync.WaitGroup for i := 1; i <= 3; i++ { wg.Add(1) go worker(i, &wg) } wg.Wait() fmt.Println("Tous les workers ont terminé")}Worker 3 démarreWorker 1 démarreWorker 2 démarreWorker 2 terminéWorker 1 terminéWorker 3 terminéTous les workers ont terminé