参考资料: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;
}

 

posted on 2021-02-05 16:00  邶风  阅读(50)  评论(0编辑  收藏  举报