变量赋值是原子吗?

时间:2016-01-12 17:39:16

标签: go concurrency

如果我有两个线程同时修改结构上的字符串字段,我是否总是会看到分配给该字段的一个或另一个字符串,但没有别的?

1 个答案:

答案 0 :(得分:11)

没有。如果您需要原子操作,则有sync/atomic

Go Memory Model将包含所有相关详细信息。从内存模型文档的顶部:

  

修改多个同时访问的数据的程序   goroutines必须序列化这种访问。

     

要序列化访问权限,请使用通道操作或其他操作保护数据   同步原语,例如syncsync/atomic中的原语   包。