参考资料:https://zhuanlan.zhihu.com/p/107092432
所谓原子操作,就是多线程程序中“最小的且不可并行化的”操作。
对于在多个线程间共享的一个资源而言,这意味着同一时刻,
多个线程中有且仅有一个线程在对这个资源进行操作,即互斥访问。
#include <iostream> #include <thread> #include <mutex> #include <atomic> using namespace std; atomic<int> sum = 0; //atomic_int sum = 0; void workFun() { for (int i = 0; i < 300000; i++) { sum++; } }//抢占式 int main() { thread t[3]; for (int i=0;i<3;i++) { t[i] = thread(workFun); } for (int i = 0; i < 3; i++) { t[i].join(); } cout << "sum=" << sum << endl; cout << "i am main thread " << endl; return 0; }