我试图了解Go中的并发性。特别是,我编写了以下线程不安全程序:
package main
import "fmt"
var x = 1
func inc_x() { //test
for {
x += 1
}
}
func main() {
go inc_x()
for {
fmt.Println(x)
}
}
我知道我应该使用渠道来防止与发生竞争x,但这不是重点。该程序打印1,然后似乎永远循环(不再打印任何内容)。我希望它能打印出无限的数字列表,可能由于竞态条件而跳过某些数字并重复其他数字(或更糟糕的是,在更新数字时打印数字inc_x)。
我的问题是:为什么程序只打印一行?
只是要清楚一点:在这个玩具示例中,我并不是故意使用渠道。
慕的地8271018
阿波罗的战车
鸿蒙传说
相关分类