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试一试。

0
1
CYW好好学习
我试了很多次,是有一定几率卡死。
2019-09-02
共1条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程