Intern
sync.WaitGroup sayacı, Add'e kıyasla Done'un fazla çağrılması nedeniyle negatif hale gelirse ne olur?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go'da sync.WaitGroup'un 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, Done() çağrıldığında ise 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.