Sobes.tech
Senior

Proč potřebujeme v této úloze WaitGroup?

sobes.tech AI

Odpověď od AI

WaitGroup v Go se používá k synchronizaci gorutin. V úlohách, kde je spuštěno více gorutin, umožňuje WaitGroup hlavnímu vláknu počkat na dokončení všech spuštěných gorutin před pokračováním v provádění. Tím se zabrání předčasnému ukončení programu nebo přechodu na další krok, když operace na pozadí ještě nejsou dokončeny.

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í
        // práce gorutiny
        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 WaitGroup zajišťuje správnou koordinaci a zabraňuje závodům nebo předčasnému ukončení programu.