Junior — Middle
Ako určiť, že všetky dcérske gorutiny v programe v jazyku Go ukončili vykonávanie?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa zvyčajne používa synchronizácia pomocou typu sync.WaitGroup na určenie ukončenia všetkých detských gorútin.
Príklad:
var wg sync.WaitGroup
wg.Add(3) // očakávame 3 gorutiny
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signalizujeme ukončenie
// práca gorutiny
fmt.Println("Gorutina", id, "ukončená")
}(i)
}
wg.Wait() // blokuje, kým všetky gorutiny nevolajú Done
fmt.Println("Všetky gorutiny sú ukončené")
Týmto spôsobom WaitGroup umožňuje hlavnej gorutine počkať na ukončenie všetkých detských gorútin.