8

MSDN 指出

long、ulong、double、decimal以及用户定义的类型,不保证是原子 的 5.5 变量引用的原子性

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

Volatile.Write(ref mydouble, value);在一个线程和Volatile.Read(ref mydouble)另一个mydoubledouble类型的线程中执行是否安全?

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

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

1 回答 1

8

不,Volatile 不是原子的,在 SMP(>1 处理器)系统中假设是不安全的。它在单处理器机器上是安全的。

除非您真的需要性能,否则您可能需要Interlocked或。Interlocked.ExchangeInterlocked.Read

于 2012-09-15T07:30:09.140 回答