利用atomic关键字,来控制变量在多线程中的同步。
代码是学习语言最好的方式,上代码:
#include <iostream>
#include<thread>
#include<atomic>
#include<vector>
#include<windows.h>
using namespace std;
void fun(atomic<int>&counter)
{
for(int i=0;i<100;i++)
{
++counter;
Sleep(1000);
}
}
int main()
{
atomic<int>counter(0);
vector<thread>threads;
for(int i=0;i<100;i++)
{
threads.push_back(thread(fun,ref(counter)));
}
cout<<counter<<endl;
for(auto &t : threads)
t.join();
return 0;
}