Sobes.tech
Junior — Middle

wg.Add çağrı sayısı çalışan goroutine sayısıyla uyuşmazsa ne sonuçlar ortaya çıkar?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, sync.WaitGroup, bir dizi goroutine'in tamamlanmasını beklemek için kullanılır. wg.Add(n) yöntemi sayacı n kadar artırır ve wg.Done() sayacı 1 azaltır. wg.Add çağrılarının sayısı, başlatılan goroutine sayısıyla (yani wg.Done çağrılarıyla) uyuşmazsa:

  • Eğer wg.Add, wg.Done sayısından azsa, wg.Done çağrıldığında sayaç negatif olabilir, bu da çalışma zamanı hatası (panic) ile sonuçlanır.
  • Eğer wg.Add, wg.Done sayısından fazlaysa, wg.Wait() sonsuza kadar bloklanır çünkü sayaç sıfıra ulaşmaz — bu bir deadlock'e yol açar.

Bu nedenle, goroutine'leri başlatmadan önce wg.Add'yi doğru sayıyla çağırmak ve wg.Done'yu tam olarak eklenmiş sayıda çağırmak önemlidir.