volatile

    10热度

    5回答

    在C和C++的变量可以被标记为volatile,这意味着,编译器不会优化它,因为它可被修改外部声明对象。在Delphi编程中有没有相同的东西?如果不是关键字,也许是解决方法? 我的想法是使用绝对,但我不确定,这可能会引入其他副作用。

    10热度

    4回答

    由于只有引用类型和一些原语(包括浮动,但不会增加一倍,我不知道为什么,我很高兴听到的原因所在)可以声明为挥发,如果我换一个双在一个类然后声明它为volatile(如下),将双线属性'读写'线程安全的任何其他易失性,或者我应该仍然在锁定? public class MyThreadedClass { volatile VolatileDouble voldub; } public

    8热度

    3回答

    我有一个引用类型的变量,即readonly,因为引用永远不会改变,只有它的属性。当我试图将volatile修饰符添加到它时,编译警告我不会让这两个修饰符应用于相同的变量。但我认为我需要它是不稳定的,因为我不想在阅读它的属性时发生缓存问题。我错过了什么?还是编译器错了? 更新正如马丁在下面的注释之一中所述:readonly和volatile修饰符只应用于引用,而不适用于引用类型对象的对象属性。这就是

    6热度

    5回答

    我正在尝试编写一个用于消息传递的调用队列的无锁版本。这不是什么严肃的事情,只是为了了解线程。 我比较确定我的代码是正确的,除非指令在寄存器中重新排序或完成。我知道我可以使用内存屏障来停止重新排序,但我如何确保值立即写入内存? Public Class CallQueue Private first As New Node(Nothing) 'owned by consumer'

    38热度

    4回答

    下面的代码 using System.Threading; class Test { volatile int counter = 0; public void Increment() { Interlocked.Increment(ref counter); } } 引发以下编译器警告: "A reference to a vola