我正在编写一个 C++ 应用程序。
我有一个类变量,多个线程正在写入该变量。
在 C++ 中,任何可以在编译器“意识到”正在更改的情况下进行修改的内容都需要标记为易失性,对吧?因此,如果我的代码是多线程的,并且一个线程可能写入 var,而另一个线程从中读取,我是否需要标记 var volaltile?
[我没有竞争条件,因为我依赖于对整数的写入是原子的]
Thanks!
C++ 还没有任何多线程的规定。在实践中,易失性并没有按照你的意思做(它是为内存寻址硬件而设计的,虽然这两个问题很相似,但它们的不同之处足以使易失性不能做正确的事情——请注意,易失性已被用于其他在 mt 上下文中使用的语言)。
因此,如果您想在一个线程中写入对象并在另一个线程中读取它,则必须在需要时使用实现所需的同步功能。据我所知,挥发性在其中不起任何作用。
仅供参考,下一个标准将考虑 MT,而 volatility 不会在其中发挥作用。所以这不会改变。您将只拥有需要同步的标准定义条件以及实现这些条件的标准定义方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)