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 туура координацияны камсыздайт жана жарыштардын же эрте аяктоонун алдын алат.