当我查看 golang 内存模型文档(链接)时,我在 go lang 上发现了一个奇怪的行为。该文档说下面的代码可能会发生 g 打印 2 然后打印 0。
var a, b int
func f() {
a = 1
b = 2
}
func g() {
print(b)
print(a)
}
func main() {
go f()
g()
}
这只是常规问题吗?因为我很好奇为什么变量 'b' 的值分配可以在 'a' 之前发生?即使 'a' 和 'b 的赋值发生在不同的线程中(不在主线程中),是否必须确保在它自己的线程中在 'b' 之前分配 'a'?(因为 ' a' 先出现,然后 'b' 出现)有人能清楚地告诉我这个问题吗?
梦里花落0921
相关分类