- 将globalWaitGroup.Go替换为显式调用Add和Done - 添加了对函数执行完毕后的Done调用 - 使用goroutine包装函数调用以确保正确计数 -保持与原逻辑一致的行为和语义
@@ -8,5 +8,9 @@ var globalWaitGroup sync.WaitGroup
func GlobalWaitGroupWait() { globalWaitGroup.Wait() }
func GlobalWaitGroupWaitGo(f func()) {
- globalWaitGroup.Go(f)
+ globalWaitGroup.Add(1)
+ go func() {
+ defer globalWaitGroup.Done()
+ f()
+ }()
}