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.