ICE執行緒池模型

2021-05-11 11:37:28 字數 1466 閱讀 7627

ice執行緒池模型 — l/f領導者跟隨者模式

摘自:leo 阿材

程池模式一般分為兩種:l/f領導者與跟隨者模式、hs/ha半同步/半非同步模式。

hs/ha 半同步/ 半非同步模式 :

分為三層,同步層、佇列層、非同步層,又稱為生產者消費者模式,主線程處理i/o事件並解析然後再往佇列丟資料,然後消費者讀出資料進行應用邏輯處理;

優點:簡化程式設計將低層的非同步i/o和高層同步應用服務分離,且沒有降低低層服務效能。集中層間通訊。

缺點:需要執行緒間傳輸資料,因此而帶來的動態記憶體分配,資料拷貝,語境切換帶來開銷。高層服務不可能從底層非同步服務效率中獲益。

l/f 領導者跟隨者模式 :

在lf執行緒池中,執行緒可處在3種執行緒狀態之一: leader、follower或processor。處於leader狀態的執行緒負責監聽網路埠,當有訊息到達時,該執行緒負責訊息分離,並從處於 follower狀態中的執行緒中按照某種機制如fifo或基於優先順序等選出乙個來當新的leader,然後將自己設定為processor狀態去分配和處理該事件。處理完畢後執行緒將自身的狀態設定為follower狀態去等待重新成為leader。在整個執行緒池中同一時刻只有乙個執行緒可以處於leader 狀態,這保證了同一事件不會被多個執行緒重複處理。

缺點:實現複雜性和缺乏靈活性;

優點:增強了cpu快取記憶體相似性,消除了動態記憶體分配和執行緒間的資料交換。

兩種模式效能分析:併發效能分析:

t(多路分離)、t(分配):lf和hh中把每乙個訊息的到來當作乙個事件來處理。事件分配所做的工作是在乙個事件處理器登錄檔中為乙個事件查詢事件處理器。這一步驟花費的時間隨著當前註冊的事件處理器的個數變化。當執行緒池接受使用者連線請求後會為每乙個連線註冊乙個事件處理器,所有通過該連線發來的請求都將由同乙個事件處理器來處理。而事件處理器表採用乙個平衡二叉樹來實現。因此,事件分配的時間可以認為是隨著併發使用者數的增大而增大;

t(處理)處理訊息和管理執行緒所需的時間都不受併發使用者數的影響。

t(執行緒管理),多執行緒帶來的執行緒管理開銷只會隨著執行緒池中線程數而變化,相對固定。

lf和hh的吞吐量會隨著併發使用者數的增加而增加。當併發使用者數達到一定數量時,cpu成為系統瓶頸,此後增大併發使用者數不僅不能增加併發處理的請求個數,反而會加大多路分離和分配的時間,從而使得系統吞吐量下降。

最佳效能時執行緒數:

隨著執行緒數的增多吞吐量不斷增大,當達到最大值後有乙個短暫的保持階段,此後繼續增大執行緒數反而會使得吞吐量減小。而且當請求型別為計算密集型時執行緒數對hh 的吞吐量的影響並不是很明顯。原因是hh執行緒池在增加執行緒數時執行緒管理開銷也有較大幅度的增加。因此,通過增大執行緒數來改善系統效能對hh來說並不是一種有效的方法。

ICE執行緒池模型

ice執行緒池模型 l f領導者跟隨者模式 摘自 leo 阿材 程池模式一般分為兩種 l f領導者與跟隨者模式 hs ha半同步 半非同步模式。hs ha 半同步 半非同步模式 分為三層,同步層 佇列層 非同步層,又稱為生產者消費者模式,主線程處理i o事件並解析然後再往佇列丟資料,然後消費者讀出資...

執行緒池網路模型

兩種方法吧,一種是leader follower模型,一種是half sync half async模型。leader follower設定乙個queue,io thread向queue中push,worker thread從queue中pop。pop中,如果沒有item,就pthread cond...

ICE執行緒類多執行緒

執行緒 1.thread類 1.1概述 ice中的基礎執行緒是由threadcontrol類和thread類來提供的 在iceutil iceutil.h中定義 thread類是乙個抽象基類,擁有乙個純虛方法run。要建立執行緒,必須特化thread類,並實現run方法。1.2 其成員函式 1 id...