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多路複用

發佈了61 篇原創文章 · 獲贊 33 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章