Junior — Middle
wg.Add çağırışlarının sayı işləyən gorutinlərin sayına uyğun gəlməzsə, hansı nəticələr ortaya çıxar?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, sync.WaitGroup bir qrup goroutine-in tamamlanmasını gözləmək üçün istifadə olunur. wg.Add(n) metodu sayğacı n qədər artırır və wg.Done() onu 1 azaldır. Əgər wg.Add çağırışlarının sayı işə salınmış goroutine-lərin sayına (yəni, wg.Done çağırışlarına) uyğun gəlməzsə,:
- Əgər
wg.Addwg.Done-dan azdırsa,wg.Doneçağırıldıqda sayğac mənfi ola bilər, bu da runtime panic-ə səbəb olar. - Əgər
wg.Addwg.Done-dan çoxdursa,wg.Wait()heç vaxt bloklanacaq, çünki sayğac sıfıra çatmayacaq — bu, deadlock-ə gətirib çıxaracaq.
Bu səbəbdən, goroutine-ləri işə salmadan əvvəl wg.Add-ni düzgün sayda çağırmaq və wg.Done-nu tam olaraq əlavə edilən say qədər çağırmaq vacibdir.