C++ volatile
误解
volatile 可以解决多线程中的某些问题,"多线程开发中保持可见性的关键字"
C++官方解释
类型为volatile限定的对象,或volatile对象的子对象,或const-volatile对象的可变子对象。出于优化目的(即在单个执行线程中,通过volatile限定类型的glvalue表达式进行的每次访问(读取或写入操作,成员函数调用等)都被视为可见的副作用)无法优化访问,也不会因其他易见的副作用(在volatile访问之前或之后)而被优化或重新排序,这使得volatile对象适合与信号处理程序进行通信,但不适合与其他执行线程进行通信,请参见std :: memory_order)。通过非易失性glvalue引用易失性对象的任何尝试(例如,通过对非易失性类型的引用或指针)都会导致未定义的行为。
要点
- volatile对象适合与信号处理程序进行通信
- 不适合与其他执行线程进行通信
总结
本人现在还没有volatile的使用经验,不过不懂就不能乱用.
另一篇文章,我感觉写的很好:https://segmentfault.com/a/1190000017797051