Sobes.tech
Middle+

WaitGroup haqida batafsilroq aytib bering: qanday ishlaydi, Add, Done, Wait nima qiladi?

sobes.tech AI

AIdan javob

Go'da WaitGroup, guruh goroutinlarning yakunlanishini kutish uchun ishlatiladi.

  • Add(n int) — hisoblagichni n ga oshiradi, odatda goroutinlarni ishga tushirishdan oldin chaqiriladi.
  • Done() — hisoblagichni 1 ga kamaytiradi, ish tugagach goroutin ichida chaqiriladi.
  • Wait() — hisoblagich nolga teng bo'lguncha bajarilishini to'xtatadi, ya'ni barcha goroutinlar Done chaqirgach.

Misol:

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

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done()
        fmt.Println("Goroutine", id, "tugadi")
    }(i)
}

wg.Wait() // barcha goroutinlar tugashini kutamiz
fmt.Println("Barcha goroutinlar tugadi")

Shu tarzda, WaitGroup parallel vazifalarni sinxronlashtirishga va ularning tugashini kutishga yordam beradi.