Intern
Агар ҳисобкунаки sync.WaitGroup ба сабаби даъватҳои иловагӣ ба Done нисбат ба Add манфӣ шавад, чӣ мешавад؟
sobes.tech AI
Ҷавоб аз AI
Агар د حسابگر sync.WaitGroup په Go کې منفي شي ځکه چې د Done() غوښتنې د Add() څخه زیاتې شي، نو په وخت کې به پانیک (panic) رامنځته شي.
WaitGroup د تمه شوې goroutines شمېر د حسابګر له لارې تعقیبوي. کله چې Add(n) غوښتنه وشي، حسابګر د n سره زیاتېږي، او کله چې Done() وشي — د 1 سره کمېږي. که حسابګر منفي شي، دا د کارونې تېروتنه ګڼل کېږي.
د تېروتنې مثال:
var wg sync.WaitGroup
wg.Add(1)
wg.Done()
wg.Done() // اضافي غوښتنه، پانیک به راشي
پانیک د لاندې پیغام سره څرګندیږي:
panic: sync: negative WaitGroup counter
له همدې امله، مهمه ده چې د Add او Done ترمنځ سخت توازن وساتل شي ترڅو دا تېروتنه مخنیوی وشي.