原子操作的不需要用到互斥量加锁技术,原子操作是在多线程中不会被打断的程序执行片段,比互斥量效率更高,但是原子操作只是针对一般只有一个变量,而不是一个代码段的情况,面对一个代码段还是得用互斥量加锁。原子操作一般指的是不可分割的操作,要么是完成状态,要么是没有完成状态,不会出现中间半完成状态。
atomic是一个类模板,用来封装某个类型的值的,他有很多成员函数
1#include<iostream>
2 #include<thread>
3 #include<atomic>
4 using namespace std;
5
6 std::atomic<int> g_mycount(0) ; //封装一个int类型的对象,初始化为0
7
8 void mythread(){
9 for(int i = 0;i<1000000;i++){