Sobes.tech
Junior — Middle

Go tilida WaitGroup tuzilmasi goroutinlarni sinxronlashtirish uchun qanday funksiyalarni taqdim etadi?

sobes.tech AI

AIdan javob

Go tilida, sync.WaitGroup tuzilmasi bir nechta gorutinni sinxronlashtirish uchun ishlatiladi va asosiy goroutine'ning boshqa gorutinning yakunlanishini kutishini ta'minlaydi.

WaitGroup ning asosiy metodlari:

  • Add(delta int) — kutayotgan gorutinning sonini oshiradi yoki kamaytiradi. Odatda, gorutinni ishga tushirishdan oldin chaqiriladi.

  • Done() — hisoblagichni 1 ga kamaytiradi, gorutinning ishini tugatganda chaqiriladi.

  • Wait() — hisoblagich nolga teng bo'lguncha bajarilishini to'xtatadi.

Foydalanish misoli:

var wg sync.WaitGroup

wg.Add(3) // 3 ta gorutinni kutamiz

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

wg.Wait() // barcha gorutinning yakunlanishini kutamiz
fmt.Println("Barcha gorutinalar yakunlandi")

Shu tarzda, WaitGroup parallel bajarilishni muvofiqlashtirishga yordam beradi va dastur oldindan tugamaydi.