Sobes.tech
Middle+

Povedz mi viac o WaitGroup: ako funguje, čo robia Add, Done, Wait?

sobes.tech AI

Odpoveď od AI

WaitGroup v Go sa služí na čakanie na dokončenie skupiny gorutín.

  • Add(n int) — zvyšuje čítač o n, zvyčajne sa volá pred spustením gorutín.
  • Done() — znižuje čítač o 1, volá sa v gorutíne po dokončení práce.
  • Wait() — blokuje vykonanie, kým čítač nedosiahne nulu, teda kým všetky gorutiny nevolajú Done.

Príklad:

var wg sync.WaitGroup
wg.Add(3) // čakáme na 3 gorutiny

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done()
        fmt.Println("Gorutina", id, "dokončená")
    }(i)
}

wg.Wait() // čakáme na dokončenie všetkých gorutín
fmt.Println("Všetky gorutiny sú dokončené")

Týmto spôsobom pomáha WaitGroup synchronizovať paralelné úlohy a čakať na ich dokončenie.