MSDN指出:
对于其他类型的读写操作,包括
long
、ulong
、double
和decimal
,以及用户定义的类型,不一定是原子操作。
C# 7.0草案规范 - 变量 - 9.6 变量引用的原子性
Volatile.Write(Double, Double)
能作为原子操作吗?如果可以,这是如何保证的?
在一个线程中执行Volatile.Write(ref mydouble, value);
,在另一个线程中执行Volatile.Read(ref mydouble)
,其中mydouble
的类型是double
,这样做是否安全?
这是一个一般性问题。另一个问题是,在这种特定情况下我应该怎么做:
- 2个Xeon x64服务器处理器
- Windows + MS .NET 4.5
- 从不同的线程中进行读写操作
- 最小的延迟(需要最小的延迟,因为我正在编写高频交易软件)