c# - 如何执行双原子读取?

标签 c# atomic interlocked

为什么没有可用于 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/

相关文章:

c# - 是否可以绑定(bind)一个asp :GridView to a List<T>?

c# - "executenonquery connection property has not been initialized"

c++ - boost::asio::io_service::post 是原子的吗?

c++ - 使用 std::atomic 中的方法时是否隐式调用 load()?

c++ - 使用 GCC 进行原子 64 位写入

multithreading - Delphi [volatile]和InterlockedCompareExchange不可靠吗?

c# - 将 C# dll 导入到 C++ 托管代码 (.NET)

C# 什么更快,在函数开头或在每个 for 循环内声明循环变量?

c# - 线程安全左移

c# - ConcurrentQueue 一个元素被两个线程取走