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