摘自網絡上看過的文章,處於以不詳~
一、一些概念
同步:發送請求,等待返回,然後再發送下一個請求。
異步:發送請求,不等待返回,接下來可以處理其他事情,或者隨時發送下一個請求。
併發:同時處理多個請求
二、線程池模型
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多路複用