Junior — Middle
Loyihalaringizda sync.WaitGroup yordamida sinxronizatsiya mexanizmini qoʻlladizmi?
sobes.tech AI
AIdan javob
Ha, Go loyihalarida sync.WaitGroup ko'pincha gorutinalarni sinxronlashtirish uchun ishlatiladi. Bu mexanizm parallel vazifalar guruhining yakunlanishini kutishga imkon beradi.
Ishlash prinsipi:
WaitGroupobyekti yaratiladi.- Har bir gorutina ishga tushirilishidan oldin
Add(1)chaqiriladi, bu hisoblagichni oshiradi. - Gorutina ichida ish tugagach,
Done()chaqiriladi, bu hisoblagichni kamaytiradi. - Asosiy gorutina
Wait()chaqiradi, u hisoblagich nolga teng bo'lguncha bloklanadi.
Misol:
var wg sync.WaitGroup
wg.Add(2) // 2 ta gorutina kutamiz
go func() {
defer wg.Done()
// birinchi gorutina ishlari
}()
go func() {
defer wg.Done()
// ikkinchi gorutina ishlari
}()
wg.Wait() // ikkala gorutina ham tugashini kutamiz
Bu paralel operatsiyalarni muvofiqlashtirish va dastur erta tugashining oldini olish uchun qulay.