Sobes.tech
Senior

Kodėl mums reikalingas WaitGroup šiame užduotyje?

sobes.tech AI

Atsakymas iš AI

WaitGroup Go kalboje naudojamas gorutinų sinchronizacijai. Darbų metu, kai paleidžiama daugiau nei viena gorutina, WaitGroup leidžia pagrindiniam srautui laukti, kol bus baigtos visos paleistos gorutinos, prieš tęsiant vykdymą. Tai užkerta kelią ankstyvam programos užbaigimui arba pereiti prie kitos fazės, kai foninės operacijos dar nėra baigtos.

Naudojimo pavyzdys:

var wg sync.WaitGroup
wg.Add(3) // laukiame 3 gorutinų

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // signalizuojame apie pabaigą
        // gorutinos darbas
        fmt.Println("Gorutina", id, "baigta")
    }(i)
}

wg.Wait() // laukiame, kol baigsis visos gorutinos
fmt.Println("Visos gorutinos baigtos")

Taip, WaitGroup užtikrina teisingą koordinaciją ir apsaugo nuo lenktynių sąlygų ar ankstyvo programos užbaigimo.