volatile关键字在C++中很少被使用,更准确来说是很少被正确使用,它的用途令人很迷惑,甚至这个关键字都不会出现在并发章节。因为这个关键字对于并发编程来说没有任何用处,但是在其他编程语言中这个关键字的用途却很大,因此很值得在本文去探讨一下volatile关键字,排除读者们对volatile关键字的困扰。
推荐一下何登成大神的一篇关于volatile关键字的博客C/C++ Volatile关键词深度剖析
在C++11中提供了一个std::atomic类模版,可以具体实例化出int、bool、指针等类型实例,这个实例保证了操作的原子性,可以被其他线程查看到操作后的结果。就好比是对操作进行了加锁,但是性能损耗更小,因为其内部使用了一种特殊的机器指令实现,该模版类的基本使用如下:
std::atomic<int> ai(0);
ai = 10; // 原子的设置ai的值为10
std