Senior
De ce avem nevoie de WaitGroup în această sarcină?
sobes.tech AI
Răspuns de la AI
WaitGroup în Go este utilizat pentru sincronizarea gorutinelor. În sarcinile în care se pornesc mai multe gorutine, WaitGroup permite firului principal să aștepte finalizarea tuturor gorutinelor pornite înainte de a continua execuția. Acest lucru previne ieșirea prematură din program sau trecerea la etapa următoare atunci când operațiile de fundal nu s-au încheiat încă.
Exemplu de utilizare:
var wg sync.WaitGroup
wg.Add(3) // așteptăm 3 gorutine
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // semnalăm finalizarea
// lucrarea gorutinei
fmt.Println("Gorutină", id, "finalizată")
}(i)
}
wg.Wait() // așteptăm finalizarea tuturor gorutinelor
fmt.Println("Toate gorutinele au fost finalizate")
Astfel, WaitGroup asigură o coordonare corectă și previne cursele sau finalizarea prematură a programului.