①並髮型模式(半同步/半非同步模式):
併發程式設計的目的是讓程式「同時」執行多個任務。
併發模式是指i/o(輸入/輸出)處理單元和多個邏輯單元之間協調完成任務的方法,在伺服器上主要有兩種併發程式設計模式:半同步/半非同步模式 和 領導者/追隨者模式。
半同步/半非同步模式的同步和非同步
在這個模式中的同步和非同步與i/o模型的同步和非同步是完全不同的兩個概念。在併發模式中,「同步」是指程式完全按照**序列的順序執行,「非同步」指的是程式執行需要系統事件來驅動。
tips:i/o模型的同步是指執行緒啟動乙個io操作然後等這個操作結束才開始往下執行,而非同步是指執行緒傳送乙個io請求到核心,此時操作已經開始執行,但不必等待,可以去執行其他操作,等到非同步程式執行完畢就會提醒你。
同步執行緒和非同步執行緒的優缺點:
-同步執行緒的效率比較低,實時性差,但是邏輯簡單。
-非同步執行緒效率較高,實時性強,但是非同步方式執行程式比較複雜,難於除錯和拓展,不適合大量的開發。
-因此為了得到良好的實時性,又要求併發性的應用程式,同時使用同步執行緒和非同步執行緒是一種相當不錯的模式。
半同步/半非同步模式:
在半同步/半非同步模式中,同步執行緒用於處理客戶邏輯,非同步執行緒用於處理i/o事件。非同步執行緒監聽到客戶請求之後就將其封裝成請求物件並插入到請求佇列中。請求佇列將通知某個工作在同步模式的工作執行緒來讀取並處理該請求物件。
並髮型模式(領導者/追隨者模式):
領導者/追隨者模式:
這個模式是指 多個工作執行緒輪流獲得事件源集合,並輪流監聽、分發並處理事件的一種模式。
領導者/追隨者模式執行流程:
領導者/追隨者模式的缺點:
極端情況下,當所有執行緒都變為工作者忙於處理客戶端的請求,沒有執行緒擔任領導者的角色,此時客戶端的請求會被拒絕。
②執行緒池模式:
這個模式首先啟動一定量的工作執行緒。當沒有請求的時候,所有執行緒都會處於等待狀態,一旦有需求送達,就會喚醒某個執行緒來處理,處理後就會等待新的需求。
執行緒池模式的優點:
優點:
①抵消執行緒建立的開銷,提高響應性;
②封裝了工作者執行緒生命週期管理;
③減少銷毀執行緒的開銷。
兩種高效的併發模式
設計模式-執行緒池模式
執行緒池和設計模式
執行緒池 一種執行緒使用模式。執行緒過多會帶來排程開銷,進而影響快取區域性性和整體效能。而執行緒池維護著多個 執行緒,等待著監督管理者分配可併發執行的任務。這避免了在處理短時間任務時建立與銷毀執行緒的代價。執行緒池不僅能夠保證核心的充分利用,還能防止過分排程。應 用 需要大量的執行緒來完成任務,且完...
設計模式 執行緒池模式
定義 worker thread的角色 例項應用 利用同步塊來處理,vector容器來儲存客戶端請求。利用vector來儲存,依舊是每次集合的最後乙個位置新增請求,從開始位置移除請求來處理。在channel有快取請求方法和處理請求方法,利用生成者與消費者模式來處理儲存請求,利用正向等待來判斷任務池的...
懶漢模式 餓漢模式 執行緒池例項
單例設計模式 保證類在記憶體中只有乙個物件 餓漢式 class singleton 2,宣告乙個引用 private static singleton s new singleton 3,對外提供公共的訪問方法 public static singleton getinstance 懶漢式 clas...