Web開發 之IO多路復用

2021-10-08 03:25:28 字數 593 閱讀 3694

linux的五種io模型:阻塞、非阻塞、io多路復用、事件驅動、非同步

ps:io多路復用和非阻塞是並列的關係,不過一般來說io多路復用都是和非阻塞搭配使用的。

阻塞模型:一次網路io時,c端發出請求,s端收到。當c端發出乙個請求,進行io時,就不能進行其他操作了,需要同步的等待結果的返回。

io多路復用模型:有多個c端同時傳送請求,這些io操作會被selector(epoll,kqueue)給暫時掛起,入記憶體佇列。此時s端可以自己選擇什麼時候來讀取並處理這些io,也就是說s端可以同時hold住多個io。

s端通過sel.select()每次選出乙個sock,然後對這個sock上的事件進行處理。所以io多路復用,在沒有用其他非同步api的情況下,還是同步的操作。

參考:io多路復用

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 往流中讀出資料...