1. 程式人生 > >select、poll、epoll的比較

select、poll、epoll的比較

select、poll、epoll都能同時監聽多個檔案描述符。它們將等待指定時間,直到一個或多個檔案描述符上有時間發生時返回,返回值是就緒的檔案描述符數量。返回0表示沒有事件發生。select、poll和epoll的不同主要體現在以下三個方面:

1、向核心傳遞描述符

select 每輪迴圈都要重新拷貝到核心空間
poll 每輪迴圈都要重新拷貝到核心空間
epoll 每個檔案描述符只拷貝一次到核心空間

2、核心的實現

select 核心輪詢檢查每個描述符上有沒有事件O(n)
poll 核心輪詢檢查每個描述符上有沒有事件O(n)
epoll 在檔案描述符上設定回撥函式,有資料就緒,呼叫回撥函式新增到就緒佇列O(1)

3、I/O函式返回後,檢索就緒描述符的時間複雜度

select 遍歷所有的描述符找到就緒的O(n)
poll 遍歷所有的描述符找到就緒的O(n)
epoll 直接返回就緒的描述符,不用遍歷所有描述符O(1)