c++11 线程原子变量

来源:互联网 发布:ubuntu开机启动程序 编辑:程序博客网 时间:2024/06/12 00:16
#include <iostream>
#include <thread>
#include <vector>
#include <functional>
#include <atomic>
void func(int& _counter)
{
  for(int i=0; i<10000; i++)
    ++_counter;
}




void func2(std::atomic<int>& _counter)
{
  for(int i=0; i<10000; i++)
    ++_counter;
}


int main()
{
  //int counter = 0;
  std::atomic<int> _counter(0);  //使用原子变量
  std::vector<std::thread> _threads;
  for(int i=0; i<10; i++)
    _threads.push_back(std::thread{func2, std::ref(_counter)}); //要符合线程初始逻辑


  for(auto& _t : _threads)
  {
    _t.join(); //防止主线程退出
  }




  std::cout<<"result:="<< _counter<<std::endl;
  return 0;
}
0 0
原创粉丝点击