執行緒池的應用場景:
有大量的資料請求,需要多執行流並行/併發進行處理。
執行緒池的優點:
處理任務時從執行緒池中拿出執行緒,避免了頻繁創造與銷毀執行緒造成的資源成本的浪費。
執行緒池的限制:
一般執行緒池的執行緒的數量都是有限制的,必須綜合考慮系統資源。
編寫思路:
執行緒池構成:多個執行緒+任務緩衝佇列
將任務傳入執行緒池,並且傳入任務的處理方法,即乙個函式指標,執行緒池自動呼叫執行緒進行任務處理。
執行緒池標頭檔案
1#include
2 #include
3 #include
4 #include
5 #include 67
typedef
void
(*handler_t)
(int);
8class
threadtask
14void
run()17
private:18
int _data;
19 handler_t _handler;20}
;2122 #define max_thread 5
23class
threadpool35}
36}37~
threadpool()
41bool
taskpush
(threadtask &task)
48static
void
*thr_start
(void
*arg)
55 threadtask task;
56 task = p-
>_queue.
front()
;57 p-
>_queue.
pop();
58pthread_mutex_unlock
(&p-
>_mutex)
;59 task.
run();
60}61return
null;62
}63private:64
int _thr_max;
65 std::queue _queue;
66 pthread_mutex_t _mutex;
67 pthread_cond_t _cond;68}
;
主函式:
1 #include "threadpool.hpp"
2 #include 34
//function of solve56
void
test_func
(int data)
1112
void
tmp_func
(int data)
15int
main()
else
24 pool.
taskpush
(task);25
}26sleep
(1000);
27return0;
28}
執行結果:
什麼是執行緒池 帶你初步入門理解執行緒池
答 其實說白了,執行緒池是一種多執行緒處理方法,幫我們管理執行緒,避免建立大量的執行緒增加伺服器壓力。其實在物件導向程式設計中,物件建立和銷毀是很費時間的 那麼大家就會說,使用執行緒技術不就好了 ps 多執行緒技術主要解決處理器單 元內多個執行緒執行的問題,它可以顯著減少處理器單元的閒置時間,增加處...
多執行緒 執行緒池
第一 降低資源消耗。通過重複利用已建立的執行緒降低執行緒建立和銷毀造成的消耗。第二 提高響應速度。當任務到達時,任務可以不需要等到執行緒建立就能立即執行。第三 提高執行緒的可管理性。執行緒是稀缺資源,如果無限制地建立,不僅會消耗系統資源,還會降低系統的穩定性,使用執行緒池可以進行統一分配 調優和監控...
多執行緒 執行緒池
執行緒池是什麼 執行緒池 thread pool 是一種基於池化思想管理執行緒的工具,經常出現在多執行緒伺服器中,如mysql。執行緒過多會帶來額外的開銷,其中包括建立銷毀執行緒的開銷 排程執行緒的開銷等等,同時也降低了計算機的整體效能。執行緒池維護多個執行緒,等待監督管理者分配可併發執行的任務。這...