Junior — Middle
Koje posledice će nastati ako broj poziva wg.Add ne odgovara broju pokrenutih gorutina?
sobes.tech АИ
Одговор од АИ
U Go, sync.WaitGroup se koristi za čekanje završetka skupa gorutina. Metoda wg.Add(n) povećava brojač za n, a wg.Done() ga smanjuje za 1. Ako broj poziva wg.Add ne odgovara broju pokrenutih gorutina (tj. pozivima wg.Done), onda:
- Ako je
wg.Addmanji od brojawg.Done, pri pozivuwg.Donebrojač može postati negativan, što će izazvati paniku (runtime panic). - Ako je
wg.Addveći od brojawg.Done, pozivwg.Wait()će zauvek blokirati, jer brojač neće dostići nulu — što će dovesti do deadlock-a.
Zato je važno pozvati wg.Add sa pravim brojem pre pokretanja gorutina i pozvati wg.Done tačno onoliko puta koliko je dodato.