Sobes.tech
Junior — Middle

Jak lze určit, že všechny podřízené gorutiny v programu v jazyce Go dokončily svou činnost?

sobes.tech AI

Odpověď od AI

V jazyce Go se obvykle používá synchronizace pomocí typu sync.WaitGroup k určení ukončení všech podřízených gorutin.

Příklad:

var wg sync.WaitGroup

wg.Add(3) // očekáváme 3 gorutiny

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // signalizujeme ukončení
        // práce gorutiny
        fmt.Println("Gorutina", id, "dokončena")
    }(i)
}

wg.Wait() // blokujeme, dokud všechny gorutiny nevolají Done
fmt.Println("Všechny gorutiny jsou dokončeny")

Tímto způsobem WaitGroup umožňuje hlavní gorutině počkat na dokončení všech podřízených gorutin.