为什么没有可用于 double 的 Interlocked.Read 函数,因为有 Interlocked.Exchange 和 Interlocked.CompareExchange 方法可用于 double,它们可以自动执行更复杂的功能。使用此类方法以原子方式读取 double 值(而不是使用 Interlocked.Read)将增加简单读取操作的开销。
您能否建议一种更简单的方法来原子地读取 double 值,当另一个线程使用 Interlocked.Exchange 方法更新此 double 值时。
最佳答案
Interlocked.Read
对于 long
is implemented like this :
return Interlocked.CompareExchange(ref location,0,0);
这意味着使用 CompareExchange
而不是 Read
不增加开销,不适用于 long
而不是 double
.
关于c# - 如何执行双原子读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24729034/