为什么这两种声明会有不同的结果?

WalkerLiuFei · · 1218 次点击
更多评论
wg.Add(20)等待20次,但是你的for count := 20; count >= 0; count--{}循环有21次。 main函数的wg.Wait()等到20次wg.Done()就会结束整个程序,不管你的goroutine并发还在没在执行,不信你把for改成50次循环试试。runtime.NumCPU()查看是几个核心的cpu 但是有一种情况假如main函数所在线程还没来得及结束,你for循环里的第21次goroutine线程已经进入执行就会导致wg计数为负数引发panic。 当然你设为1个goroutine运行的时候是单线程,就跟顺序执行差不多,可以及时结束不会进入第21次循环。
#1
不是应该把wg的指针传进去吗
#3