Sobes.tech
Senior

De ce avem nevoie de WaitGroup în această sarcină?

sobes.tech AI

Răspuns de la AI

WaitGroup în Go este utilizat pentru sincronizarea gorutinelor. În sarcinile în care se pornesc mai multe gorutine, WaitGroup permite firului principal să aștepte finalizarea tuturor gorutinelor pornite înainte de a continua execuția. Acest lucru previne ieșirea prematură din program sau trecerea la etapa următoare atunci când operațiile de fundal nu s-au încheiat încă.

Exemplu de utilizare:

var wg sync.WaitGroup
wg.Add(3) // așteptăm 3 gorutine

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // semnalăm finalizarea
        // lucrarea gorutinei
        fmt.Println("Gorutină", id, "finalizată")
    }(i)
}

wg.Wait() // așteptăm finalizarea tuturor gorutinelor
fmt.Println("Toate gorutinele au fost finalizate")

Astfel, WaitGroup asigură o coordonare corectă și previne cursele sau finalizarea prematură a programului.