sync.waitgroup奇怪的地方

tommytian770401 · · 971 次点击
我觉得楼上是正确的,在求和之后再done,否则你的wg只wait到for循环结束,很容易导致求和的goroutine被kill
#5
更多评论
多试几次,不一定是最后一次,结果也不一定是***15***,你这写法有不确定性,只要每个`go`协程中的`defer wg.Done()`执行完`sum`就会被打印出来,无论`ch`中的数据有没有全部被读取出来,这个按照你代码执行的一次结果 ``` 5 1 4 2 sum is done 12 ```
#1
在最后加一个`time.Sleep(6 * time.Second)`就一定能看到了,并发协程未执行完导致的问题。
#2