select poll epoll事件驅動

2021-08-01 11:16:58 字數 689 閱讀 8897

一直用select, 沒有使用poll和epoll, 近來需要使用epoll。以前面試時,有人問過我, 我也簡單作答。

現在寫一下我的理解。

三者區別:

select: 監聽的檔案描述符有限制,linux系統預設是1024

poll:和select差不多, 比select優越的地方是監聽的檔案描述符個數可以不限

epoll: 

1) 監聽的檔案描述符個數不限   

2) select/poll有事件時,會無差別遍歷所有檔案描述符,依次判斷是否有資料,複雜度為o(n); 而epoll 會把哪個流發生了怎樣的i/o事件通知我們,複雜度為o(1)

。顯然epoll優勢明顯。(具體用法google一下)

select/poll:  

while true   

}  epoll:  

while true   

}  3) epoll 包含 et 和 lt兩種模式。lt模式是預設的。 

lt模式和select/poll一致, 判斷fd是否readable/writeable。只要fd可讀或可寫,即觸發事件

et模式, 只有fd變化時,才觸發事件。故資料要一次讀/寫完才行。

ps : select /poll 可用於阻塞/非阻塞io

epoll : lt模式和 select/poll一致, 但et模式只能用於非阻塞io

select poll epoll學習筆記

io多路復用,網路程式設計。io模型 阻塞式io模型 非阻塞式io模型,需要輪詢核心,較少使用 io復用模型,阻塞於select 訊號驅動式io模型 核心通知使用者程序何時可以啟動乙個io操作 非同步io模型 核心通知使用者程序操作何時完成。posix標準 可移植作業系統介面,ieee為各種在uni...

select poll epoll模型對比

select poll epoll模型對比 先說select 1.socket數量限制 該模式可操作的socket數由fd setsize決定,核心預設32 32 1024.2.操作限制 通過遍歷fd setsize個socket來完成排程,不管哪個socket是活躍的,都遍歷一遍.後說poll 1...

I O復用 select poll epoll區別

select 和poll的區別 select select的觸發方式是水平觸發 lt 應用程式如果沒有完成對乙個已經就緒的檔案描述符進行io操作,那麼之後每次select呼叫還是會將這些檔案描述符通知程序。建立陣列,儲存描述符 一次while 要做的事 清空集合fd zero 遍歷陣列,將fd寫入f...