RSS
菜单

Go sync.WaitGroup 怎么用?Add/Done/Wait 的正确姿势与注意事项

WaitGroup 等待一组 goroutine 完成:wg.Add(n) 计数、wg.Done() 减一(defer wg.Done())、wg.Wait() 阻塞到计数归零。注意事项:① Add 必须在 Wait 之前且与 goroutine 数一致;② 不要在 goroutine 内调用 Add(可能 Wait 已开始导致竞态);③ Done 要保证执行(defer);④ WaitGroup 不可复制(传指针);⑤ 计数不能为负(会 panic)。替代:errgroup 收集错误、channel 关闭信号。

下载推广海报

圈内讨论推广海报

《Go sync.WaitGroup 怎么用?Add/Done/Wait 的正确姿势与注意事项》完整推广海报
一起交流

全部回复 0

分享经验,让问题更进一步

讨论,从你的观点开始

还没有回复,欢迎补充经验或分享不同的思路。