//第一个疑问 第一行的结果是什么鬼 打印了半截? //第二个疑问不论哪个协程先进入for{}循环一定会拿到apple 进行打印.是不是fmt.Println()打印函数有延时
有疑问加站长微信联系(非本文作者))

//第一个疑问 第一行的结果是什么鬼 打印了半截? //第二个疑问不论哪个协程先进入for{}循环一定会拿到apple 进行打印.是不是fmt.Println()打印函数有延时
有疑问加站长微信联系(非本文作者))
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
每个协程是运行在不同的逻辑处理器上的,默认是并行的,可能你的一个协程减到0的时候,另一个协程又执行了--运算,等于0这个条件就永远不满足了
上面说的不严谨,是go的调度器会平均分配在不同的逻辑处理器上。如果你是单核,这应该就是运行到第二个协程就是-1开始一直减的一个死循环了,想要不同协程共享这个apple数据用通道做
我的版本是 go1.12.5 好像是默认开启多核的.上面打印的原因找到了,应该是控制台放不到了. 打印的结果应该就是你说的,不断的有其他的线程修改变量,0刚好跳过了.改成<=0就可以了.~~~~谢谢解答
那欠的苹果谁来补
markdown会写吗,发图片》。