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.