執行緒池和設計模式

2021-10-01 17:50:05 字數 1126 閱讀 9131

執行緒池:

一種執行緒使用模式。執行緒過多會帶來排程開銷,進而影響快取區域性性和整體效能。而執行緒池維護著多個 執行緒,等待著監督管理者分配可併發執行的任務。這避免了在處理短時間任務時建立與銷毀執行緒的代價。執行緒池不僅能夠保證核心的充分利用,還能防止過分排程。

應   用:

需要大量的執行緒來完成任務,且完成任務的時間比較短。

對效能要求苛刻的應用,比如要求伺服器迅速響應客戶請求。

接受突發性的大量請求,但不至於使伺服器因此產生大量執行緒的應用。

29 class threadpool

72static

void

*handlertask

(void

* arg)

7383 task t;

84 tp->

poptask

(t);

85 tp->

unlockqueue()

;86int result = t.

run();

87 cout <<

"thread: "

<<

pthread_self()

<<

", result: "

<89}

void

init()

9198

}

注意:類內成員函式多執行緒呼叫時需要宣告為static形式,因為c++類成員函式使用時,都會隱式傳遞乙個this指標給該函式,this指標指向該類的物件

資源並不在初始化階段全部載入或者初始化,而是等到使用的時候才去判斷。

優點:初始化比較快,在執行階段使用的時候也只需要載入一次。

實現:

class test }}

;

所有的資源載入或者物件例項化都放在程式的初始化階段,接下來在各個執行緒中直接使用即可。

優點:資源直接載入,因此執行時效能會比較高

缺點:將當前不用的資源載入到記憶體中,因此資源消耗大,初始化階段耗時比較長。

實現:

class test 

};

設計模式 執行緒池模式

定義 worker thread的角色 例項應用 利用同步塊來處理,vector容器來儲存客戶端請求。利用vector來儲存,依舊是每次集合的最後乙個位置新增請求,從開始位置移除請求來處理。在channel有快取請求方法和處理請求方法,利用生成者與消費者模式來處理儲存請求,利用正向等待來判斷任務池的...

設計模式和執行緒設計模式

volatile 可見性和順序性,不保證原子性 單例模式 監控執行緒生命週期的observable 採用乙個observable介面來獲取任務執行的狀態,主要想法是重寫run方法。在任務建立,開始,結束,錯誤時介入乙個方法,用來進行處理。同時維護乙個指示任務狀態的類變數。採用模板設計模式的方式,將具...

並髮型模式和執行緒池模式

並髮型模式 半同步 半非同步模式 併發程式設計的目的是讓程式 同時 執行多個任務。併發模式是指i o 輸入 輸出 處理單元和多個邏輯單元之間協調完成任務的方法,在伺服器上主要有兩種併發程式設計模式 半同步 半非同步模式 和 領導者 追隨者模式。半同步 半非同步模式的同步和非同步 在這個模式中的同步和...