Sobes.tech
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.