goroutine 第一节的实例,运行结果跟老师讲的不一致
来源:10-1 goroutine

慕粉2311055928
2019-07-04
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???
写回答
1回答
-
ccmouse
2019-07-07
您的程序运行了多久出的结果?
可能是系统有些不一致。不管如何,这样的并发的行为我们没有说一定是哪一种情况,这个例子只是演示了goroutine需要主动交出控制权,不然 有可能 会卡死。即使你不卡死,不说明别人不卡死。
我去go playground试了下,它也会卡死https://play.studygolang.com/p/qaZCoIN24dZ
可以点击Run试一试。
012019-09-02
相似问题