问题标签 [volatile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5496 浏览

c# - C# 易失双

因为只有引用类型和一些原语(包括浮点数,但不是双精度数,我不确定原因,我很高兴听到为什么)可以声明为易失性,如果我在一个类中包装一个双精度然后声明它作为易失性(如下),双重属性是否像任何其他易失性一样是“读写”线程安全的,还是我仍然应该关注锁定?

0 投票
4 回答
1236 浏览

c++ - 如何在 C++ 中声明 volatile 迭代器

有没有办法声明一个迭代器,它是类中的成员变量,即使该类的对象是 const,也可以使用成员函数递增。

0 投票
7 回答
4344 浏览

c - 我怎么知道 gcc 是否同意某些东西是易变的?

考虑以下:

我如何知道 gcc 是否将 i 视为 volatile?它将被声明为这样,因为附近没有代码会修改它,并且修改它很可能是由于一些中断。

我不是世界上最差的汇编程序员,但我在电视上玩过一个。有人可以帮我理解它会有什么不同吗?

如果您采用以下愚蠢的代码:

编译成object格式,通过objdump反汇编,去掉'volatile'后也一样,没有区别(根据diff)。volatile 声明是否太接近其检查或修改的位置,还是在声明 volatile 时我应该总是使用某种原子类型?一些优化标志会影响这一点吗?

请注意,我的愚蠢样本与我的问题不完全匹配,我意识到这一点。我只是想知道 gcc 是否将变量视为 volatile,因此我正在研究小型转储以尝试找出差异。

0 投票
6 回答
5552 浏览

c++ - 成员函数什么时候应该同时是 const 和 volatile ?

我正在阅读有关 volatile 成员函数的内容,并确认成员函数可以同时是const 和 volatile。我没有得到这种东西的真正用途。任何人都可以分享他们将成员函数作为 const 和 volatile 一起实际使用的经验。

我写了小班来测试同样的:

0 投票
5 回答
1617 浏览

c# - EventWaitHandle 是否有任何隐式 MemoryBarrier?

刚接触这个网站,所以如果我没有以可接受的方式发帖,请告诉我。

我经常按照下面的示例编写一些代码(为了清楚起见,省略了 Dispose 之类的东西。)。我的问题是,是否需要如图所示的挥发物?或者 ManualResetEvent.Set 是否像我读过的那样具有隐式内存屏障 Thread.Start 呢?或者明确的 MemoryBarrier 调用会比 volatile 更好吗?还是完全错误?此外,据我所见,某些操作中的“隐式内存屏障行为”没有记录,这很令人沮丧,在某处是否有这些操作的列表?

谢谢,汤姆

0 投票
6 回答
5136 浏览

vb.net - 如何在 VB.net 中指定 volatile 的等价物?

我正在尝试编写用于消息传递的调用队列的无锁版本。这不是什么严肃的事情,只是为了了解线程。

我相对确定我的代码是正确的,除非指令被重新排序或在寄存器中完成。我知道我可以使用内存屏障来停止重新排序,但是如何确保立即将值写入内存?

0 投票
4 回答
974 浏览

c# - Java 似乎支持 long 类型的 volatile 字段,而 C# 不支持 - 这背后的原因是什么?

谁能向我解释这两种不同方法的优缺点是什么?

0 投票
4 回答
16395 浏览

c - 在 C 中,如何将结构的成员声明为 volatile?

如何将结构的特定成员声明为 volatile?

0 投票
2 回答
1884 浏览

c - C99 中的易失语义

我正在编写的一些低级代码存在问题,我需要将对象用作易失性对象,但这并不一定是我希望将类型声明为易失性(出于可重用性原因)。但是,我可以定义指向结构的合格变体的指针,如以下部分所述。

现在 foo 实际上是一个指向该类型对象的指针:

因为 volatile 适用于所有结构成员。现在我的问题是当一个对象包含指向另一个对象的指针时,如何应用易失性?

将指向 x 的 volatile 实例的指针然后将其视为:

或作为:

我通读了 C 标准,对此不是很清楚,我可以很容易地以多种方式解释措辞。

0 投票
6 回答
5757 浏览

java - 为什么默认情况下Java中的变量不是易变的?

可能类似的问题:

你曾经在 Java 中使用过 volatile 关键字吗?


今天我在调试我的游戏;它有一个非常困难的线程问题,每隔几分钟就会出现一次,但很难重现。所以首先我将synchronized关键字添加到我的每个方法中。那没有用。然后我将volatile关键字添加到每个字段。问题似乎只是自己解决了。

经过一些实验,我发现负责的字段是一个GameState跟踪我的游戏当前状态的对象,它可以是正在玩的,也可以是忙碌的。忙碌时,游戏会忽略用户输入。我所拥有的是一个不断更改state变量的线程,而事件线程读取state变量。但是,一个线程更改变量后,另一个线程需要几秒钟才能识别更改,这最终导致了问题。

它是通过使状态变量来修复的volatile

为什么默认情况下Java中没有变量,volatile不使用volatile关键字的原因是什么?