Sobes.tech
Junior

Ako v programovacom jazyku (Go) sledovať, že všetky spustené vlákna ukončili svoju činnosť a hlavný vlákno môže využiť výsledky?

sobes.tech AI

Odpoveď od AI

V jazyku Go sa zvyčajne používa typ sync.WaitGroup na sledovanie ukončenia všetkých spustených gorutín. Umožňuje hlavnej vlákne čakať, kým všetky gorutiny nedokončia svoju činnosť.

Príklad použitia:

var wg sync.WaitGroup

wg.Add(3) // čakáme na 3 gorutiny

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

wg.Wait() // hlavné vlákno sa zablokuje, kým čítač wg nedosiahne 0
fmt.Println("Všetky gorutiny sú ukončené, výsledky je možné použiť")

Týmto spôsobom WaitGroup umožňuje synchronizáciu vykonávania a garantuje, že riadiace vlákno bude čakať na ukončenie všetkých paralelných úloh.