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 goroutine күтүп жатабыз

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // аяктоо белгиси
        // goroutine иши
        fmt.Println("Goroutine", id, "аяктады")
    }(i)
}

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

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