執行緒池:
一種執行緒使用模式。執行緒過多會帶來排程開銷,進而影響快取區域性性和整體效能。而執行緒池維護著多個 執行緒,等待著監督管理者分配可併發執行的任務。這避免了在處理短時間任務時建立與銷毀執行緒的代價。執行緒池不僅能夠保證核心的充分利用,還能防止過分排程。
應 用:
需要大量的執行緒來完成任務,且完成任務的時間比較短。
對效能要求苛刻的應用,比如要求伺服器迅速響應客戶請求。
接受突發性的大量請求,但不至於使伺服器因此產生大量執行緒的應用。
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 輸入 輸出 處理單元和多個邏輯單元之間協調完成任務的方法,在伺服器上主要有兩種併發程式設計模式 半同步 半非同步模式 和 領導者 追隨者模式。半同步 半非同步模式的同步和非同步 在這個模式中的同步和...