sync.waitgroup奇怪的地方

tommytian770401 · · 947 次点击
多试几次,不一定是最后一次,结果也不一定是***15***,你这写法有不确定性,只要每个`go`协程中的`defer wg.Done()`执行完`sum`就会被打印出来,无论`ch`中的数据有没有全部被读取出来,这个按照你代码执行的一次结果 ``` 5 1 4 2 sum is done 12 ```
#1
更多评论
在最后加一个`time.Sleep(6 * time.Second)`就一定能看到了,并发协程未执行完导致的问题。
#2
如果直接用[]chan是可以解决问题的,那么再请教一下在这种chan和waitgroup混用的思路下,该如何解决这个问题呢?
#3