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.