引用:redis設計與實現 第12章 檔案事件
概念:「多路」指的是多個網路連線,「復用」指的是復用同乙個執行緒。採用多路 i/o 復用技術可以讓單個執行緒高效的處理多個連線請求(儘量減少網路io的時間消耗)。可以直接理解為:單執行緒的原子操作,避免上下文切換的時間和效能消耗;加上對記憶體中資料的處理速度,很自然的提高redis的吞吐量
檔案事件四個組成部分
儘管多個檔案事件可能會併發地出現,但i/o多路復用程式總是會將所有產生事件的套接字都放到乙個佇列裡面,然後通過這個佇列,以有序(sequentially)、同步(synchronously)、每次乙個套接字的方式向檔案事件分派器傳送套接字。當上乙個套接字產生的事件被處理完畢之後(該套接字為事件所關聯的事件處理器執行完畢),i/o多路復用程式才會繼續向檔案事件分派器傳送下乙個套接字,如圖所示:
io多路復用程式監聽多個套接字,然後分發不同事件給不同執行緒,避免乙個執行緒處理時間長導致堵塞其他請求
(乙個socket作為復用來完成整個io流的請求連線建立(accept),而處理請求(recv,send,close)則採用多執行緒)
I O多路復用
一 五種i o模型 1 阻塞i o模型 最流行的i o模型是阻塞i o模型,預設情形下,所有套介面都是阻塞的。我們以資料報套介面為例來講解此模型 我們使用udp而不是tcp作為例子的原因在於就udp而言,資料準備好讀取的概念比較簡單 要麼整個資料報已經收到,要麼還沒有。然而對於tcp來說,諸如套介面...
i o多路復用
最常見的i o多路復用就是 select poll epoll了,下面說說他們的一些特點和區別吧。select 可讀 可寫 異常三種檔案描述符集的申明和初始化。fd set readfds,writefds,exceptionfds fd zero readfds fd zero writefds ...
I O多路復用
我們都知道unix like 世界裡,一切皆檔案,而檔案是什麼呢?檔案就是一串二進位製流而已,不管socket,還是fifo 管道 終端,對我們來說,一切都是檔案,一切都是流。在資訊 交換的過程中,我們都是對這些流進行資料的收發操作,簡稱為i o操作 input and output 往流中讀出資料...