基礎概念
#include#include using namespace std;
#include #include #include class task
~task()
{}void setdata(int _x,int _y)
int run()
};
class threadpool
void unlockqueue()
bool queueisempty()
void threadwait()
void poptask(task& t)
void pushtask(task& t)
void notifythread()
(4)然後進行構造和析構的定義,主要是對訊號量和鎖進行初始化;
public:
threadpool(int _num=6)
:num(_num)
~threadpool()
(5)建立num個執行緒,對執行緒進行初始化
void initthreadpool()
task t;
tp->poptask(t);//如果任務不為空,拿任務
tp->unlockqueue();
//任務拿出來後開始處理任務
int result=t.run();
cout<<"thread :"<(8)進行驗證即可
int main()
delete tp;
}
這個**的執行結果就是:
[daisy@localhost test_2019_11_8_1]$ ./thread_pool
thread :139724298610432,result :400
thread :139724298610432,result :402
thread :139724290217728,result :404
thread :139724281825024,result :406
thread :139724273432320,result :408
thread :139724265039616,result :410
thread :139724298610432,result :412
thread :139724290217728,result :414
thread :139724281825024,result :416
thread :139724273432320,result :418
thread :139724265039616,result :420
thread :139724298610432,result :422
thread :139724290217728,result :424
thread :139724281825024,result :426
thread :139724273432320,result :428
thread :139724265039616,result :430
==總結:==執行緒池是為了大量的執行緒來完成任務,且完成任務的時間比較短的情況而產生的,節省了開闢銷毀執行緒的資源開銷。
執行緒池適用於大量資料請求的多工併發處理場景;
執行緒池源**(github):
Linux執行緒池
linux下通用執行緒池的建立與使用 本文給出了乙個通用的執行緒池框架,該框架將與執行緒執行相關的任務進行了高層次的抽象,使之與具體的執行任務無關。另外該執行緒池具有動態伸縮性,它能根據執行任務的輕重自動調整執行緒池中線程的數量。文章的最後,我們給出乙個簡單示例程式,通過該示例程式,我們會發現,通過...
Linux 執行緒池
一.功能 執行緒池中有若干個執行緒,用於執行大量相對短暫的任務 二.功能描述 計算密集型任務 執行緒池中線程個數 cpu個數 i o密集型任務 執行緒池中線程個數 cpu個數 當任務增加時,可以動態增加執行緒池中線程個數,當任務執行完成後,可以動態減少執行緒池中線程個數 運用生產消費者模型,生產者執...
Linux 執行緒池
首先,執行緒池是什麼?顧名思義,就是把一堆開闢好的執行緒放在乙個池子裡統一管理,就是乙個執行緒池。其次,為什麼要用執行緒池,難道來乙個請求給它申請乙個執行緒,請求處理完了釋放執行緒不行麼?也行,但是如果建立執行緒和銷毀執行緒的時間比執行緒處理請求的時間長,而且請求很多的情況下,我們的cpu資源都浪費...