由于只有引用类型和一些原语(包括浮动,但不会增加一倍,我不知道为什么,我很高兴听到的原因所在)可以声明为挥发,如果我换一个双在一个类然后声明它为volatile(如下),将双线属性'读写'线程安全的任何其他易失性,或者我应该仍然在锁定? public class MyThreadedClass
{
volatile VolatileDouble voldub;
}
public
我正在尝试编写一个用于消息传递的调用队列的无锁版本。这不是什么严肃的事情,只是为了了解线程。 我比较确定我的代码是正确的,除非指令在寄存器中重新排序或完成。我知道我可以使用内存屏障来停止重新排序,但我如何确保值立即写入内存? Public Class CallQueue
Private first As New Node(Nothing) 'owned by consumer'
下面的代码 using System.Threading;
class Test
{
volatile int counter = 0;
public void Increment()
{
Interlocked.Increment(ref counter);
}
}
引发以下编译器警告: "A reference to a vola