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