关于volatile,其实就两点

2410阅读 0评论2014-03-07 Aquester
分类:C/C++

各种文章对volatile说了很多,但对不少人来说,看完后仍云里雾里,其实就两点:
1.强制每次都从内存取数据,而不是寄存器(软件Cache,非硬件Cache)
2.防止编译器将代码行优化掉

多核环境中,慎用volatile,应当使用atomic替代,典型应用:
  1. class CWorker
  2. {
  3. public:
  4.     CWorker()
  5.         : _stop(false) {
  6.     }
  7.     void stop() { _stop = true; }
  8.     void run() {
  9.         while (!_stop)
  10.     }
  11.     
  12. private:
  13.     //volitle bool _stop;
  14.     std::atomic<bool> _stop;
  15. };

C++标准权威结论:

https://isocpp.org/blog/2018/06/is-volatile-useful-with-threads-isvolatileusefulwiththreads.com





上一篇:拼车协议书(拼车合同)
下一篇:大数据利器