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.