Intern
sync.WaitGroup hisoblagichi Add bilan solishtirganda Done qo'shimcha chaqirilgani uchun manfiy bo'lsa nima bo'ladi?
sobes.tech AI
AIdan javob
Go'da sync.WaitGroup ning hisoblagichi Add() dan ko'proq Done() chaqirilgani uchun manfiy bo'lsa, ish vaqtida panic (panika) yuzaga keladi.
WaitGroup kutayotgan gorutinlar sonini hisoblagich orqali kuzatadi. Add(n) chaqirilganda, hisoblagich n ga oshadi, Done() chaqirilganda — 1 ga kamayadi. Agar hisoblagich nolga teng yoki undan kichik bo'lsa, bu foydalanish xatosi hisoblanadi.
Xato misoli:
var wg sync.WaitGroup
wg.Add(1)
wg.Done()
wg.Done() // qo'shimcha chaqiriq, panicga olib keladi
Panik quyidagi xabar bilan yuzaga keladi:
panic: sync: negative WaitGroup counter
Shuning uchun, bu xatoni oldini olish uchun, Add va Done o'rtasida qat'iy muvozanatni saqlash muhimdir.