IO多路復用

2021-08-21 07:01:59 字數 610 閱讀 4640

io操作一般可以分為兩步:

1.程序等待某個流就緒,比如socket上快取著網路傳送來的流,但是可能還沒有到位

2.某個流就緒後,拷貝流到程序中來

阻塞/非阻塞:

檢視流準備就緒沒有

1.程序阻塞

2.程序不阻塞,但是會輪詢,也就是過一段時間會檢視流準備就緒了沒有

在流拷貝到程序中來的過程,程序都會阻塞

同步/非同步:

1.不管是檢視流的情況,還是拷貝流,都是程序阻塞的

2.反之。發起io請求後,程序繼續執行,等待io請求完成後,再通知程序

多路復用:

也是阻塞io。可以監視多個描述符,一旦有某個描述符準備就緒,就會通知程序進行io操作

非阻塞io怎麼檢視流的:

1.一直輪詢

不停地把所有的流都輪詢一遍

2.select方式

如果有乙個描述符就緒,就輪詢所有的流。否則就釋放cpu資源

3.epoll方式

輪詢描述符就緒的流,而非所有的流

epoll方式

1.epoll_create

2.epoll_ctl

對需要監聽的描述符進行操作

3.epoll_wait

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