帶你搞定多執行緒 下 徹底理解執行緒池

2021-10-08 13:02:17 字數 1831 閱讀 7725

執行緒池的應用場景:

有大量的資料請求,需要多執行流並行/併發進行處理。

執行緒池的優點:

處理任務時從執行緒池中拿出執行緒,避免了頻繁創造與銷毀執行緒造成的資源成本的浪費。

執行緒池的限制:

一般執行緒池的執行緒的數量都是有限制的,必須綜合考慮系統資源。

編寫思路:

執行緒池構成:多個執行緒+任務緩衝佇列

將任務傳入執行緒池,並且傳入任務的處理方法,即乙個函式指標,執行緒池自動呼叫執行緒進行任務處理。

執行緒池標頭檔案

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。執行緒過多會帶來額外的開銷,其中包括建立銷毀執行緒的開銷 排程執行緒的開銷等等,同時也降低了計算機的整體效能。執行緒池維護多個執行緒,等待監督管理者分配可併發執行的任務。這...