Sobes.tech
Junior — Middle

Môžete vysvetliť, ako funguje mechanizmus čakania na dokončenie viacerých gorútin v Go pomocou WaitGroup?

sobes.tech AI

Odpoveď od AI

V jazyku Go sa na čakanie na dokončenie viacerých gorútin používa typ sync.WaitGroup. Umožňuje "prihlásiť sa" na niekoľko gorútin a zablokovať vykonávanie, kým všetky nedokončia.

Hlavné metódy WaitGroup:

  • Add(n int) — zvyšuje čítač o n, zvyčajne sa volá pred spustením gorútin.
  • Done() — znižuje čítač o 1, volá sa na konci každej gorutiny.
  • Wait() — blokuje vykonávanie, kým čítač nedosiahne 0.

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.Printf("Gorutina %d beží\n", id)
        // nejaká práca
    }(i)
}

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