Senior
Ai decis să scrii WaitGroup pentru că a apărut un canal sau pentru că ai decis să scrii goroutines pentru ceva?
sobes.tech AI
Răspuns de la AI
WaitGroup în Go este folosit pentru a aștepta finalizarea unui grup de goroutines.
Dacă ai mai multe goroutines care execută sarcini în paralel și trebuie să le aștepți să se termine înainte de a continua, WaitGroup este un instrument util.
Canalele și goroutines sunt mecanisme diferite. Un canal servește pentru comunicare și sincronizare între goroutines, în timp ce WaitGroup servește pentru a aștepta finalizarea acestora.
De exemplu, dacă ai goroutines pentru realizarea unor sarcini și vrei să aștepți ca toate să se termine, folosești WaitGroup:
var wg sync.WaitGroup
wg.Add(3) // așteptăm 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done()
// lucrarea goroutine
fmt.Println("Goroutine", id, "terminată")
}(i)
}
wg.Wait() // așteptăm finalizarea tuturor goroutines
Astfel, WaitGroup se folosește exact pentru că există goroutines care trebuie sincronizate la finalizare, nu din cauza apariției canalelor.