Sobes.tech
Middle+

Ispričaj mi više o WaitGroup: kako radi, šta rade Add, Done, Wait?

sobes.tech АИ

Одговор од АИ

WaitGroup u Go se koristi za čekanje završetka grupe gorutina.

  • Add(n int) — povećava brojač za n, obično se poziva pre pokretanja gorutina.
  • Done() — smanjuje brojač za 1, poziva se unutar gorutine nakon završetka rada.
  • Wait() — blokira izvršenje dok brojač ne postane nula, tj. dok sve gorutine ne pozovu Done.

Primer:

var wg sync.WaitGroup
wg.Add(3) // čekamo 3 gorutine

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done()
        fmt.Println("Gorutina", id, "završena")
    }(i)
}

wg.Wait() // čekamo da sve gorutine završe
fmt.Println("Sve gorutine su završene")

Na ovaj način, WaitGroup pomaže u sinhronizaciji paralelnih zadataka i čekanju njihovog završetka.