1.强制每次都从内存取数据,而不是寄存器(软件Cache,非硬件Cache)
2.防止编译器将代码行优化掉
多核环境中,慎用volatile,应当使用atomic替代,典型应用:
-
class CWorker
-
{
-
public:
-
CWorker()
-
: _stop(false) {
-
}
-
void stop() { _stop = true; }
-
void run() {
-
while (!_stop)
-
}
-
-
private:
-
//volitle bool _stop;
-
std::atomic<bool> _stop;
- };
C++标准权威结论:
https://isocpp.org/blog/2018/06/is-volatile-useful-with-threads-isvolatileusefulwiththreads.com

