在浏览有关多线程编程的许多资源时,通常会出现对易失性说明符的引用。
很明显,至少在 C/C++ 和 Java(版本 1.4 及更早版本)中,使用此关键字不是实现多线程之间同步的可靠方法。
以下是维基百科列出的(没有解释如何)作为此说明符的典型用法:-
- 允许访问内存映射设备
- 允许在 setjmp 和 longjmp 之间使用变量
- 允许在信号处理程序中使用变量
- 忙着等待
我可以开始看到这个说明符在上面列出的用法中的作用,但由于我还没有完全理解这些领域中的每一个,所以我无法弄清楚这个说明符在每个用法中的确切行为。
有人可以解释一下吗?
从技术上讲,您的问题被称为“一罐蠕虫”!
对于c/c++(我无法评论java)
您可以非常粗略地将 volatile 概括为对编译器的指令,告诉编译器“请不要优化它”,但专业人士之间存在很多争论,至于它是否是
a) 对于内核级代码来说非常有用
b) 甚至大多数编译器都能正确实现。
另外,切勿将其用于多线程编程和这是一个很好的解释
=编辑=
有趣的是,它的价值是什么。 Dennis Ritchie 反对包含它(以及 const )细节here
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)