Intern
sync.WaitGroup-in sayğacı, Add-ə nisbətən Done-un əlavə çağırışları səbəbindən mənfi olarsa nə baş verir?
sobes.tech Süni İntellekt
AI-dan cavab
Go'da sync.WaitGroup-in sayacı, Done() çağrıları Add()'den fazla olduğunda negatif hale gelirse, çalışma zamanında bir panik (panic) meydana gelir.
WaitGroup, beklenen goroutine sayısını bir sayaç aracılığıyla takip eder. Add(n) çağrıldığında sayaç n artar, ve Done() çağrıldığında — 1 azalır. Sayaç sıfırın altına düşerse, bu kullanım hatası olarak kabul edilir.
Hata örneği:
var wg sync.WaitGroup
wg.Add(1)
wg.Done()
wg.Done() // fazladan çağrı, panic'e yol açar
Panik, şu mesajla oluşur:
panic: sync: negative WaitGroup counter
Bu nedenle, bu hatayı önlemek için, Add ve Done arasında sıkı bir denge kurmak önemlidir.