我阅读了一些关于该volatile关键字的文章,但我无法弄清楚它的正确用法.你能告诉我在C#和Java中它应该用什么吗?
我想编写一个程序,它可以直观地说明volatile关键字的行为.理想情况下,它应该是一个程序,它执行对非易失性静态字段的并发访问,并因此而获得不正确的行为.
在同一程序中添加volatile关键字应该可以解决问题.
那是我无法实现的.即使尝试多次,启用优化等,我总是会在没有'volatile'关键字的情况下获得正确的行为.
你对这个话题有什么看法吗?你知道如何在一个简单的演示应用程序中模拟这样的问题吗?它取决于硬件吗?
我正在写一个C++应用程序.
我有一个多个线程正在写入的类变量.
在C++中,任何可以在没有编译器"意识到"它被更改的情况下进行修改的东西都需要标记为volatile吗?因此,如果我的代码是多线程的,并且一个线程可以写入var而另一个线程从中读取,我是否需要标记var volaltile?
[我没有竞争条件,因为我依赖于对原子的写入]
谢谢!
在多线程编程上经历许多资源时,通常会出现对volatile说明符的引用.很明显,使用此关键字并不是在C/C++和Java(版本1.4及更早版本)中实现多个线程之间同步的可靠方法.以下是维基百科列出(不解释如何)作为此说明符的典型用法: -
我可以开始在上面列出的用法中看到这个说明符的作用,但由于我还没有完全理解这些区域中的每一个,我无法弄清楚这个说明符在每个用法中的行为.
有人能解释一下吗