Sobes.tech
Middle+

Pověz mi víc o WaitGroup: jak funguje, co dělají Add, Done, Wait?

sobes.tech AI

Odpověď od AI

Veřejná skupina ve Go se používá k čekání na dokončení skupiny gorutin.

  • Add(n int) — zvyšuje čítač o n, obvykle voláno před spuštěním gorutin.
  • Done() — snižuje čítač o 1, volá se uvnitř gorutiny po dokončení práce.
  • Wait() — blokuje provádění, dokud čítač nedosáhne nuly, tj. dokud všechny gorutiny nevolají Done.

Příklad:

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

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

wg.Wait() // čekáme na dokončení všech gorutin
fmt.Println("Všechny gorutiny jsou dokončeny")

Tímto způsobem pomáhá WaitGroup synchronizovat paralelní úkoly a čekat na jejich dokončení.