Senior
Rozhodl jste se napsat WaitGroup, protože se objevil kanál, nebo jste se rozhodli napsat goroutines pro něco?
sobes.tech AI
Odpověď od AI
WaitGroup v Go se používá k počkání na dokončení skupiny gorutin.
Pokud máte několik gorutin, které provádějí paralelní úkoly, a je třeba počkat na jejich dokončení před pokračováním, je WaitGroup užitečným nástrojem.
Kanály a gorutiny jsou odlišné mechanismy. Kanál slouží k komunikaci a synchronizaci mezi gorutinami, zatímco WaitGroup slouží k čekání na jejich dokončení.
Například, pokud máte gorutiny, které vykonávají úkoly, a chcete počkat, až všechny skončí, použijete WaitGroup:
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()
// práce gorutiny
fmt.Println("Gorutina", id, "dokončena")
}(i)
}
wg.Wait() // čekáme na dokončení všech gorutin
Tímto způsobem se WaitGroup používá právě proto, že je třeba synchronizovat gorutiny na jejich dokončení, nikoli kvůli vzniku kanálů.