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