volatile 关键字,粗暴理解为读取,赋值都必须是进入主存。。。。
在java环境下,其内存模型 load, store等操作都是原子的(64位非volatile可以不是原子),
所以volatile修饰的变量可以用作一些标志开关。。。。
但是在c++环境下,由于没有load,store这些原子操作保证,所以无法直接用volatile来修饰一个bool来作为多线程环境下的标志开关。。
而是应该用std::atomic
这也是c++本身各种标准比较不一致造成的