程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 使用libuv實現生產者和消費者模式,libuv生產者

使用libuv實現生產者和消費者模式,libuv生產者

編輯:C++入門知識

使用libuv實現生產者和消費者模式,libuv生產者


生產者和消費者模式(Consumer + Producer model)

用於把耗時操作(生產線程),分配給一個或者多個額外線程執行(消費線程),從而提高生產線程的響應速度(並發能力)

 

定義

1 typedef std::unique_ptr<Work> WorkPtr;
2 std::queue<WorkPtr> work_queue;
3 uv_mutex_t mutex;
4 uv_cond_t cond;


生產

1 //adding new work
2 WorkPtr newWork(new Work);
3 uv_mutex_lock(&mutex);
4 work_queue.push(std::move(new_work));
5 uv_cond_signal(&cond);
6 uv_mutex_unlock(&mutex);


消費

 1 while(true)
 2 {
 3   //copying work that has to be done
 4   uv_mutex_lock(&mutex);
 5   while(work_queue.empty())
 6   {
 7     uv_cond_wait(&cv, &mutex);
 8   }
 9   WorkPtr work;
10   work.swap(work_queue.front());
11   work_queue.pop();
12   uv_mutex_unlock(&mutex);
13   //doing work ...
14 }

 



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved