MSDN 指出:
其他类型的读取和写入,包括long
, ulong
, double
, and decimal
以及用户定义的类型不需要是原子的。
C# 7.0 规范草案 - 变量 - 9.6 变量引用的原子性
Will Volatile.Write(Double, Double)作为原子操作工作?如果是这样,这如何保证?
这样做安全吗Volatile.Write(ref mydouble, value);
在一个线程中并且Volatile.Read(ref mydouble)
在另一个地方mydouble
has double
type?
这是一般性问题。另一个问题 - 在这种特殊情况下我应该做什么:
- 2 处理器 Xeon x64 服务器
- Windows + 微软.NET 4.5
- 从不同线程读/写双精度
- 最小的延迟(需要最小的延迟,因为我正在编写 HFT 软件)
No, Volatile
不是原子的,并且在 SMP(>1 个处理器)系统中这样假设是不安全的。它在单处理器机器上是安全的。
除非你really需要性能,您可能想要Interlocked
相反,要么Interlocked.Exchange
or Interlocked.Read
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)