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.Donesayı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.Donesayı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.