Golang WaitGroup.Done() 被跳过

我有一个依赖于同时检查一些错误的函数,我正在尝试使用等待组来等待所有返回可能错误的进程都完成,然后再检查所有错误。

它似乎正在跳过一些 wg.Done() cals。这是调试的 youtube 视频(它循环了 3 次“for”循环,抱歉): Golang Delve Debug for WaitGroups

知道为什么它会跳过一些 waitgroup.Done() 调用吗?


三国纷争
浏览 232回答 1
1回答

哔哔one

为了后代(和谷歌搜索):放在wg.Add(1)每一go func()行之前,而不是一次性完成wg.Add(gorutineCt)放在defer wg.Done()每个 goroutine 外壳的开头,而不是wg.Done()在每个退出案例中调用。这确保wg.Done()无论如何都可以运行。使用更接近的例程,而不是尝试充分缓冲通道:// start other goroutinesgo func () {    wg.Wait()    close(errschan)}for _, err := range errsChan { // automatically terminates once chan is closed    if err != nil {         // handle err    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go