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类型的线程中安全吗?
这是一个一般性问题。另一个问题--在这种特殊情况下,我该怎么办:
发布于 2012-09-15 07:30:09
不,易失性不是原子的,在SMP (>1处理器)系统中这样做是不安全的。它在单处理器上是安全的。
除非您的确实需要性能,否则您可能需要Interlocked,而不是Interlocked.Exchange或Interlocked.Read。
https://stackoverflow.com/questions/12435325
复制相似问题