Middle+
Spune-mi mai multe despre WaitGroup: cum funcționează, ce fac Add, Done, Wait?
sobes.tech AI
Răspuns de la AI
WaitGroup în Go este folosit pentru a aștepta finalizarea unui grup de goroutines.
- Add(n int) — crește contorul cu n, de obicei apelat înainte de a porni goroutines.
- Done() — scade contorul cu 1, apelat în goroutine după finalizarea muncii.
- Wait() — blochează execuția până când contorul ajunge la zero, adică până când toate goroutine-urile au apelat Done.
Exemplu:
var wg sync.WaitGroup
wg.Add(3) // așteptăm 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done()
fmt.Println("Goroutine", id, "finalizată")
}(i)
}
wg.Wait() // așteptăm finalizarea tuturor goroutine-urilor
fmt.Println("Toate goroutine-urile au fost finalizate")
Astfel, WaitGroup ajută la sincronizarea sarcinilor paralele și la așteptarea finalizării acestora.