Sobes.tech
Senior

Чаро дар ин вазифа моҷаро WaitGroup-ро лозим аст?

sobes.tech AI

Ҷавоб аз AI

Go'da WaitGroup, goroutinlarni sinxronlashtirish 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.