首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Volatile.Read / Volatile.Write用于“双”原子吗?

Volatile.Read / Volatile.Write用于“双”原子吗?
EN

Stack Overflow用户
提问于 2012-09-15 07:08:34
回答 1查看 1K关注 0票数 9

MSDN声明:

long、ulong、double和十进制以及用户定义的类型并不一定是原子http://msdn.microsoft.com/en-us/library/aa691278%28VS.71%29.aspx

Volatile.Write Method (Double%, Double)作为原子操作工作吗?如果是的话,如何保证这一点?

在一个线程中执行Volatile.Write(ref mydouble, value);,在另一个线程中执行Volatile.Read(ref mydouble),在mydouble具有double类型的线程中安全吗?

这是一个一般性问题。另一个问题--在这种特殊情况下,我该怎么办:

  • 2个处理器Xeon x64服务器
  • Windows + MS .NET 4.5
  • 来自不同线程的双读/写
  • 最小的延迟(需要最小的延迟,因为我正在编写HFT软件)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-15 07:30:09

不,易失性不是原子的,在SMP (>1处理器)系统中这样做是不安全的。它在单处理器上是安全的。

除非您的确实需要性能,否则您可能需要Interlocked,而不是Interlocked.ExchangeInterlocked.Read

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12435325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档