Junior — Middle
Jaké funkce poskytuje struktura WaitGroup v jazyce Go pro synchronizaci gorutin?
sobes.tech AI
Odpověď od AI
V jazyce Go se struktura sync.WaitGroup používá k synchronizaci více gorutin, umožňující hlavní gorutině čekat na jejich dokončení.
Hlavní metody WaitGroup:
-
Add(delta int)— zvyšuje nebo snižuje čítač očekávaných gorutin. Obvykle se volá před spuštěním gorutin. -
Done()— snižuje čítač o 1, volá se na konci práce gorutiny. -
Wait()— blokuje provádění, dokud čítač nedosáhne nuly.
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() // signalizujeme dokončení
fmt.Println("Gorutina", id)
}(i)
}
wg.Wait() // čekáme na dokončení všech gorutin
fmt.Println("Všechny gorutiny jsou dokončeny")
Tímto způsobem WaitGroup pomáhá koordinovat paralelní provádění a zajišťuje, že program neskončí dříve, než má.