1. 程式人生 > >IO、網路、多執行緒模型總結

IO、網路、多執行緒模型總結

摘自網路上看過的文章,處於以不詳~

一、一些概念

同步:傳送請求,等待返回,然後再發送下一個請求。

非同步:傳送請求,不等待返回,接下來可以處理其他事情,或者隨時傳送下一個請求。

併發:同時處理多個請求

二、執行緒池模型

HS/HA半同步/半非同步模式:分為三層,同步層、佇列層、非同步層,又稱為生產者消費者模式,主執行緒處理I/O事件並解析然後再往佇列丟資料,然後消費者讀出資料進行應用邏輯處理;

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

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

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

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

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


三、併發程式設計

Proactor:

Reactor:

四、網路模型

I/O多路複用