相关疑难解决方法(0)

go lang中的同步不正确

当我查看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()
}
Run Code Online (Sandbox Code Playgroud)

这只是常规问题吗?因为我很好奇为什么变量'b'的值赋值可以在'a'之前发生?即使'a'和'b的值赋值将在不同的线程中发生(不在主线程中),是否必须确保'a'应该在它自己的线程中的'b'之前分配?(因为赋值' '先到先得'和'b'先出现了)有谁能清楚告诉我这个问题?

multithreading synchronization go

4
推荐指数
1
解决办法
226
查看次数

标签 统计

go ×1

multithreading ×1

synchronization ×1