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