Senior
Bu tapşırıq üçün niyə WaitGroup-ə ehtiyacımız var?
sobes.tech Süni İntellekt
AI-dan cavab
Go'da WaitGroup, goroutinlarni sinxronizasiya 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() // tugashini signal qilamiz
// goroutinning ishlashi
fmt.Println("Goroutin", id, "tugadi")
}(i)
}
wg.Wait() // barcha goroutinlar tugashini kutamiz
fmt.Println("Barcha goroutinlar tugadi")
Shu tarzda, WaitGroup to'g'ri muvofiqlashtirishni ta'minlaydi va poyga yoki dastur erta tugashining oldini oladi.