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
.
安全获得的副本
正如标题所说。 基本上我想知道的是 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
.