select poll和epoll的區別

2021-09-26 12:49:42 字數 677 閱讀 7093

select,poll,epoll都是io多路復用的機制。i/o多路復用就通過一種機制,可以監視多個描述符,一旦某個描述符就緒(一般是讀就緒或者寫就緒),能夠通知程式進行相應的讀寫操作。

select僅僅知道i/o事件發生的檔案描述符的數量,但並不知道是哪幾個

1)時間複雜度:o(n)

2)優點:跨平台支援,幾乎支援所有平台

3)缺點:

本質上和select沒有區別,但是由於基於鍊錶來儲存,所以沒有最大連線數的限制

epoll提供了三個函式,epoll_create,epoll_ctl和epoll_wait。epoll_create是建立乙個epoll紅黑樹根節點,相當於事件框架(控制代碼);epoll_ctl是註冊要監聽的事件型別,並將事件新增到epoll樹上;epoll_wait則是等待事件的產生。

1)時間複雜度:o(1)

不同於忙輪詢和無差別輪詢,epoll會把哪個fd發生了怎樣的i/o事件通知我們。所以我們說epoll實際上是事件驅動(每個事件關聯上fd)的,此時我們對這些fd的操作都是有意義的。(複雜度降低到了o(1))

2)只支援linux平台

3)使用mmap實現使用者和核心空間共享記憶體,只需要將所有的fd集合拷貝一次

4)lt(水平觸發)和et(邊緣觸發)

select, poll和epoll的區別

我只用過select select 最不能忍受的是乙個程序所開啟的fd是有一定限制的,由fd setsize設定,預設值是2048。對於那些需要支援的上萬連線數目的im伺服器來說顯然太少了,select要掃瞄各個檔案描述符,而epool採用mmap更高效 select 系統呼叫提供乙個機制來實現同步...

select,poll和epoll的API複習筆記

環境 centos7 xshell 前言 select poll epoll 的區別一定要清楚 select 優點是跨平台,而poll相對其沒有1024檔案描述符的限制,共有的缺點是 1.每次監聽都需要將監聽的資訊從應用層拷貝到核心。2.返回變化的檔案描述符的個數,具體哪個檔案描述符變化需要遍歷。3...

select poll和epoll的區別

作業系統在處理io的時候,主要有兩個階段 我們一般將上述過程簡化理解為 select,poll,epoll都是io多路復用的機制。i o多路復用就通過一種機制,可以監視多個描述符,一旦某個描述符就緒 一般是讀就緒或者寫就緒 能夠通知程式進行相應的讀寫操作。但select,poll,epoll本質上都...