Junior — Middle
wg.Add chaqiriqlari soni ishga tushirilgan gorutinlar soniga mos kelmasa, qanday natijalar yuzaga keladi?
sobes.tech AI
AIdan javob
Go tilida, sync.WaitGroup bir guruh goroutinlarning yakunlanishini kutish uchun ishlatiladi. wg.Add(n) usuli hisoblagichni n ga oshiradi, wg.Done() esa uni 1 ga kamaytiradi. Agar wg.Add chaqiruvlarining soni ishga tushirilgan goroutinlar soniga (ya'ni, wg.Done chaqiruvlariga) mos kelmasa,:
- Agar
wg.Addwg.Donesonidan kam bo'lsa,wg.Donechaqirilganda hisoblagich manfiy bo'lishi mumkin, bu esa runtime panic ga olib keladi. - Agar
wg.Addwg.Donesonidan ko'p bo'lsa,wg.Wait()doim bloklanib qoladi, chunki hisoblagich nolinmaydi — bu deadlock ga olib keladi.
Shuning uchun, goroutinlarni ishga tushirishdan oldin wg.Add ni to'g'ri son bilan chaqirish va wg.Done ni aniq qo'shilgan sonicha chaqirish muhimdir.