应用场景:多线程下的计数等等。
对原子变量的操作是原子操作,能保证在任何情况下都不被打断,是线程安全的,不需要加锁。
在新标准C++11,引入了原子操作的概念,并通过这个新的头文件提供了多种原子操作数据类型,例如,atomic_bool,atomic_int等等,如果我们在多个线程中对这些类型的共享资源进行操作,编译器将保证这些操作都是原子性的,也就是说,确保任意时刻只有一个线程对这个资源进行访问,编译器将保证,多个线程访问这个共享资源的正确性。从而避免了锁的使用,提高了效率。
C++11下的用法:
头文件:#include<atomic>
atomic_int count(0);//声明并初始化
使用方法和普通的变量使用方法相同,只是它的操作已经被封装成类似原子操作,虽然实际上是封装后的,不是真正内核意义上的原子操作,但是这也简化了编程。