Sobes.tech
Junior — Middle

Jaké funkce poskytuje struktura WaitGroup v jazyce Go pro synchronizaci gorutin?

sobes.tech AI

Odpověď od AI

V jazyce Go se struktura sync.WaitGroup používá k synchronizaci více gorutin, umožňující hlavní gorutině čekat na jejich dokončení.

Hlavní metody WaitGroup:

  • Add(delta int) — zvyšuje nebo snižuje čítač očekávaných gorutin. Obvykle se volá před spuštěním gorutin.

  • Done() — snižuje čítač o 1, volá se na konci práce gorutiny.

  • Wait() — blokuje provádění, dokud čítač nedosáhne nuly.

Příklad použití:

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() // signalizujeme dokončení
        fmt.Println("Gorutina", id)
    }(i)
}

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

Tímto způsobem WaitGroup pomáhá koordinovat paralelní provádění a zajišťuje, že program neskončí dříve, než má.