社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
先上代码:
func main() {
var a [10]int
for i := 0; i < 10; i++ {
go func(i int) {
for {
a[i]++
}
}(i)
}
time.Sleep(time.Millisecond)
fmt.Println(a)
}
运行后估计大部分电脑是死循环(cpu核数大于10的会输出结果)
8核的可能有时能输出结果:7个大于0的数和3个0
有时是死循环
原因分析:
由于这两个原因导致结果是不确定的 除非cpu核数大于10
补充:
goroutine在下列情况下可能会交出控制权:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!