Sobes.tech
Junior — Middle

Aké funkcie poskytuje štruktúra WaitGroup v jazyku Go na synchronizáciu gorutín?

sobes.tech AI

Odpoveď od AI

V jazyku Go sa štruktúra sync.WaitGroup používa na synchronizáciu viacerých gorútin, umožňujúc hlavnej gorutine čakať na ich dokončenie.

Hlavné metódy WaitGroup:

  • Add(delta int) — zvyšuje alebo znižuje čítač očakávaných gorútin. Zvyčajne sa volá pred spustením gorútin.

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

  • Wait() — blokuje vykonávanie, kým čítač nedosiahne nulu.

Príklad použitia:

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

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

Týmto spôsobom WaitGroup pomáha koordinovať paralelné vykonávanie a zabezpečuje, že program sa neskončí skôr, ako má.