Senior
Da li si odlučio da napišeš WaitGroup zato što se pojavio kanal ili zato što si odlučio da napišeš goroutines za nešto?
sobes.tech АИ
Одговор од АИ
WaitGroup u Go se koristi za čekanje završetka grupe gorutina.
Ako imate više gorutina koje obavljaju paralelne zadatke i morate da ih sačekate da završe pre nego što nastavite, WaitGroup je koristan alat.
Kanal i gorutine su različiti mehanizmi. Kanal služi za komunikaciju i sinhronizaciju između gorutina, dok WaitGroup služi za čekanje njihovog završetka.
Na primer, ako imate gorutine koje obavljaju zadatke i želite da sačekate da sve završe, koristite WaitGroup:
var wg sync.WaitGroup
wg.Add(3) // čekamo 3 gorutine
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done()
// rad gorutine
fmt.Println("Gorutina", id, "završena")
}(i)
}
wg.Wait() // čekamo da sve gorutine završe
Na ovaj način, WaitGroup se koristi upravo zato što postoje gorutine koje treba sinhronizovati na njihovom završetku, a ne zbog pojave kanala.