在什么情况下我应该用VOLATILE标记STD :: ATOMIC?

时间:2016-06-07 21:23:48

标签: multithreading c++11 synchronization atomic volatile

我之前使用 volatilce cv AND std :: atomic class separtaley,现在我想知道,我应该将它们合并以确保适当的访问?

一般来说,假设我有一些全局静态原子标志,无论它是std :: atomic OR std :: atomic_flag,都不是真的问题(如我所见),我应该将其标记为易变吗?

我查看了std::atomic::operator= description并且它具有特定的易失性实现:

T operator=( T desired );
T operator=( T desired ) volatile;

由于volatile限定成员函数与volatile实例一起使用(&#34; volatile:多线程程序员最好的朋友&#34;,由 Andrei Alexandrescu < / strong>),那些设计了这样一个类接口的人被认为会出于某种目的而创建该类的易失性对象,所以显然有一些原因可以存在。

是的,我理解挥发性与原子的不同[例如,&#34; 易挥发性与易变性&#34;,通过 Herb Sutter ]

0 个答案:

没有答案