Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8133713
  • 博文数量: 594
  • 博客积分: 13065
  • 博客等级: 上将
  • 技术积分: 10324
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-26 16:44
个人简介

推荐: blog.csdn.net/aquester https://github.com/eyjian https://www.cnblogs.com/aquester http://blog.chinaunix.net/uid/20682147.html

文章分类

全部博文(594)

分类: C/C++

2014-03-07 14:39:34

各种文章对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





阅读(2361) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~