Golang:当只有一个写者使用atomic.StoreInt32改变值时,是否有必要在多个读者中使用atomic.LoadInt32?

Golang: when there's only one writer change the value using atomic.StoreInt32, is it necessary to use atomic.LoadInt32 in the multiple readers?

正如标题所说。 基本上我想知道的是 atomic.StoreInt32 在写入时也会锁定读取操作吗?

另一个相关问题:atomic.StoreUint64(&procRate, procCount)是否等同于atomic.StoreUint64(&procRate, atomic.LoadUint64(&procCount))

提前致谢。

是的,当您同时加载和存储相同的值时,您需要使用原子操作。竞争检测器应该就此向您发出警告。

关于第二个问题,如果procCount值也被并发使用,那么还是需要使用原子操作来加载。这两个等价:

atomic.StoreUint64(&procRate, procCount)
atomic.StoreUint64(&procRate, atomic.LoadUint64(&procCount))

前者直接读取procCount传递给StoreUint64,而后者传递通过LoadUint64.

安全获得的副本