Linux----網路程式設計(IO複用中select,poll,epoll之間的區別)
前面學習了select、poll和epoll三組IO複用系統呼叫,現在從向核心傳遞檔案描述符數、核心實現、檢索就緒描述符方式、工作模式和時間複雜度等五個方面比較其中的區別,以明確在實際應用中應該選擇使用哪個。
由於select與poll的特性相似,所以把它們聯絡在一起與epoll進行比較。
epoll有利於解決描述符數目很多的情況。
1. 向核心傳遞描述符數
select / poll 每輪迴圈都要重新拷貝到核心空間
epoll 每個描述符只拷貝一次到核心空間
2. 核心實現
select / poll 核心輪詢檢查描述符上是否有事件
epoll 在描述符上設定回撥函式,有資料就緒呼叫回撥函式新增到就緒佇列
3. IO函式返回後檢索就緒描述符
select / poll 遍歷所有描述符找到就緒的描述符
epoll 直接返回就緒的描述符,不需要遍歷所有描述符
4. 工作模式
select / poll LT模式(普通模式)
epoll ET模式(高效模式)
5.時間複雜度
select / poll O ( N)
epoll O(1)