0
点赞
收藏
分享

微信扫一扫

threadpool

#include <thread>

#include <iostream>

#include <mutex>

#include <numeric>

#include <vector>

#include <condition_variable>

using namespace std;


int main(){

   mutex m;

   condition_variable cond;


   vector<int> vec;

   thread t([&](){

       while(true){

     unique_lock<mutex> lock(m);

     //m.lock();

     while(vec.size()<5) cond.wait(lock);// wait

     cout << "sum:" << accumulate(vec.begin(),vec.end(),0) << endl;

     vec.clear();

     //m.unlock();

}      

   });



   int n;

   while(cin>>n){

      lock_guard<mutex> lock(m);

      // m.lock();

      vec.push_back(n);

      if(vec.size()>=5) cond.notify_one();// signal

      // m.unlock();

   }


   t.join();


}

举报

相关推荐

0 条评论