Sobes.tech
Senior

Бул тапшырмада бизге эмне үчүн WaitGroup керек?

sobes.tech AI

AIден жооп

Go'da WaitGroup, goroutinlarni sinkronizatsiya qilish uchun ishlatiladi. Bir nechta goroutinlar ishga tushirilganda, WaitGroup asosiy oqimga barcha ishga tushirilgan goroutinlar tugashini kutishga imkon beradi va shunday qilib, fon operatsiyalari hali tugamagan paytda dasturdan erta chiqish yoki keyingi bosqichga o'tishni oldini oladi.

Foydalanish misoli:

var wg sync.WaitGroup
wg.Add(3) // 3 ta goroutin kutamiz

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // сигнализация о завершении
        // goroutin иши
        fmt.Println("Goroutin", id, "аяктады")
    }(i)
}

wg.Wait() // бардык goroutin'лердин аяктоосун күтүп жатабыз
fmt.Println("Бардык goroutin'лер аяктады")

Мындайча, WaitGroup туура координацияны камсыздайт жана жарыштардын же эрте аяктоонун алдын алат.