Wait Group Misuse (ARCH5037)
هذا المحتوى غير متوفر بلغتك بعد.
Key go.async.waitgroup-misuse · Severity warning · Category async
Misusing sync.WaitGroup - calling wg.Add inside the goroutine instead of before launch, or omitting defer wg.Done() - causes races against Wait or hangs forever when a goroutine panics.
Incorrect
Section titled “Incorrect”func RunAll(tasks []func()) { var wg sync.WaitGroup for _, t := range tasks { go func(fn func()) { wg.Add(1) // after launch; may miss Wait fn() }(t) } wg.Wait()}Correct
Section titled “Correct”func RunAll(tasks []func()) { var wg sync.WaitGroup for _, t := range tasks { wg.Add(1) go func(fn func()) { defer wg.Done() fn() }(t) } wg.Wait()}Call wg.Add(1) before launching the goroutine and use defer wg.Done() at its top.