Junior
Jak v jazyce programování (Go) zjistit, že všechny spuštěné vlákna dokončila a hlavní vlákno může využít výsledky?
sobes.tech AI
Odpověď od AI
V jazyce Go se obvykle k sledování dokončení všech spuštěných gorutin používá typ sync.WaitGroup. Umožňuje hlavnímu vláknu čekat, dokud všechny gorutiny nedokončí svou činnost.
Příklad použití:
var wg sync.WaitGroup
wg.Add(3) // čekáme na 3 gorutiny
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signalizuje dokončení gorutiny
// práce gorutiny
fmt.Println("Gorutina", id, "dokončena")
}(i)
}
wg.Wait() // hlavní vlákno se zablokuje, dokud čítač wg nedosáhne 0
fmt.Println("Všechny gorutiny jsou dokončeny, lze použít výsledky")
Tímto způsobem WaitGroup umožňuje synchronizaci provádění a zajišťuje, že řídicí vlákno počká na dokončení všech paralelních úkolů.