为什么没有Interlocked.Read函数可用于double,因为Interlocked.Exchange和Interlocked.CompareExchange方法可用于double,它可以原子地执行更复杂的函数。使用此类方法以原子方式读取double值(而不是使用Interlocked.Read)将为简单的读取操作增加开销。
你能否建议一种更简单的方法来读取双原子,而另一个线程正在使用Interlocked.Exchange方法更新此double。
答案 0 :(得分:0)
Interlocked.Read
代表long
is implemented like this:
return Interlocked.CompareExchange(ref location,0,0);
这意味着使用CompareExchange
而不是Read
不会增加开销,不是long
和double
的开销。