请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

goroutine 第一节的实例,运行结果跟老师讲的不一致

goroutine 第一节的实例,运行结果跟老师讲的不一致
代码:
func test(){
var a [10]int
for i:=0; i<10; i++{
go func(x int){
for{
a[x]++
}
}(i)
}
time.Sleep(time.Millisecond)
fmt.Println(a)
}

运行结果:
[6066687 9550275 0 10495986 6515523 9189737 0 13237040 7548521 0]

why???

正在回答 回答被采纳积分+3

1回答

ccmouse 2019-07-07 16:36:57

您的程序运行了多久出的结果?

可能是系统有些不一致。不管如何,这样的并发的行为我们没有说一定是哪一种情况,这个例子只是演示了goroutine需要主动交出控制权,不然 有可能 会卡死。即使你不卡死,不说明别人不卡死。

我去go playground试了下,它也会卡死https://play.studygolang.com/p/qaZCoIN24dZ

可以点击Run试一试。

0 回复 有任何疑惑可以回复我~
  • 我试了很多次,是有一定几率卡死。
    回复 有任何疑惑可以回复我~ 2019-09-02 17:42:09
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号