Sobes.tech
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.