问题标签 [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 投票
19 回答
50834 浏览

c++ - 为什么会存在易失性?

关键字有什么作用volatile?在 C++ 中它解决了什么问题?

就我而言,我从来没有故意需要它。

0 投票
24 回答
297400 浏览

java - volatile 关键字有什么用?

今天在工作中,我偶然发现了volatileJava 中的关键字。不是很熟悉,我找到了这个解释

鉴于那篇文章解释了相关关键字的详细信息,您是否曾经使用过它,或者您是否曾经看到过可以以正确方式使用该关键字的案例?

0 投票
6 回答
14654 浏览

c# - 说明 C# 中 volatile 关键字的用法

我想编写一个小程序,直观地说明volatile关键字的行为。理想情况下,它应该是一个对非易失性静态字段执行并发访问并因此获得不正确行为的程序。

在同一个程序中添加 volatile 关键字应该可以解决问题。

那是我没能做到的。即使尝试了几次,启用优化等,我总是能在没有“volatile”关键字的情况下得到正确的行为。

你对这个话题有什么想法吗?你知道如何在一个简单的演示应用程序中模拟这样的问题吗?它取决于硬件吗?

0 投票
10 回答
154916 浏览

c# - 易失性与互锁性与锁定性

假设一个类有一个public int counter由多个线程访问的字段。这int只是增加或减少。

要增加这个字段,应该使用哪种方法,为什么?

  • lock(this.locker) this.counter++;,
  • Interlocked.Increment(ref this.counter);,
  • 将访问修饰符更改为counterto public volatile

现在我发现了volatile,我一直在删除许多lock语句和Interlocked. 但是有理由不这样做吗?

0 投票
5 回答
4523 浏览

c - Delphi 是否有任何等效于 C 的 volatile 变量?

在 C 和 C++ 中,变量可以标记为volatile,这意味着编译器不会优化它,因为它可能在声明对象之外被修改。Delphi编程中是否有等价物?如果不是关键字,也许可以解决?

我的想法是使用Absolute,但我不确定,这可能会带来其他副作用。

0 投票
18 回答
344221 浏览

c - 为什么在 C 中需要 volatile?

为什么volatile在 C 中需要?它是干什么用的?它会做什么?

0 投票
7 回答
97879 浏览

c - 静态全局变量和静态易失变量有什么区别?

我在文件范围内使用了一个静态全局变量和一个静态 volatile 变量,

两者都由 ISR 和主循环更新,主循环检查变量的值。

在优化过程中,全局变量和 volatile 变量都没有被优化。因此,不是使用 volatile 变量,而是使用全局变量来解决问题。

那么使用全局变量而不是 volatile 好不好?

使用静态易失性的任何具体原因?

任何示例程序都将是可观的。

提前致谢..

0 投票
4 回答
10697 浏览

c - 使用 volatile 变量的示例 C 函数

对于一篇论文,我正在寻找一个使用 volatile 变量的真实C 函数。这本身并不难找到,但我正在寻找一个函数,其中 volatile 变量的值必须在函数执行过程中发生变化以便到达函数的特定分支。像这样的东西:

如果在函数执行期间结构的不同位发生变化就足够了,但我的主要标准是,对于要到达的某个分支,易失性变量的值在函数执行期间发生变化。

我会非常感谢任何现实生活中的例子。我无法在网上找到很多使用 volatile 的示例。

0 投票
3 回答
3520 浏览

c# - 为什么 readonly 和 volatile 修饰符是互斥的?

我有一个引用类型变量readonly,因为引用永远不会改变,只会改变它的属性。当我尝试将volatile修饰符添加到它时,编译器警告我它不会让两个修饰符都应用于同一个变量。但我认为我需要它是 volatile 的,因为我不想在读取它的属性时遇到缓存问题。我错过了什么吗?还是编译器错了?

更新正如 Martin 在以下评论之一中所述:对于引用类型的对象,readonly 和 volatile 修饰符都仅适用于引用,而不适用于对象的属性。这就是我所缺少的,所以编译器是正确的。

0 投票
4 回答
9496 浏览

c# - “对 volatile 字段的引用不会被视为 volatile” 含义

以下代码

引发以下编译器警告:

我在这里做错了什么来发出这个警告吗?为什么编译器会对此发出警告?