Junior — Middle
Poți explica cum se implementează sincronizarea folosind Wait Group în Go?
sobes.tech AI
Răspuns de la AI
În Go, sincronizarea cu WaitGroup se realizează printr-o structură din pachetul sync, care permite așteptarea finalizării unui set de goroutines.
Metode principale:
Add(int)— crește contorul goroutine-urilor așteptate.Done()— scade contorul, apelată la finalizarea unei goroutine.Wait()— blochează execuția până când contorul ajunge la zero.
Exemplu:
var wg sync.WaitGroup
wg.Add(2) // așteptăm 2 goroutines
go func() {
defer wg.Done()
// lucrarea goroutine-ului 1
}()
go func() {
defer wg.Done()
// lucrarea goroutine-ului 2
}()
wg.Wait() // așteptăm finalizarea ambelor goroutines
Astfel, WaitGroup permite sincronizarea eficientă a mai multor sarcini paralele, fără a folosi mecanisme complexe de blocare.