Sobes.tech
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.