1. 程式人生 > 其它 >三組I/O複用函式的比較:select, poll, epoll

三組I/O複用函式的比較:select, poll, epoll

select, poll, epoll的區別
系統呼叫 select poll epoll
事件集合
  • 使用者通過3個引數分別傳入感興趣的可讀,可寫,異常等事件
  • 核心通過對這些引數的線上修改來反饋其中的就緒事件
  • =>使用者每次呼叫select都需要重置這3個引數
  • 統一處理所有事件型別,只需一個事件集引數
  • =>使用者通過pollfd.event傳入感興趣的事件
  • 核心通過修改pollfd.events來反饋其中的就緒事件
  • 核心通過一個事件表直接管理使用者感興趣的所有事件
  • =>每次呼叫epoll_wait時,無需反覆傳入使用者感興趣的事件
  • epoll_wait系統呼叫的引數events僅用來反饋就緒的事件
應用程式索引就緒檔案描述符的時間複雜度 O(N) O(N) O(1)
最大支援檔案描述符數 一般有最大值限制 65535 65535
工作模式 LT LT LT&ET
核心實現和工作效率
  • 輪詢,採用輪詢的方式來檢測就緒事件
  • 演算法時間複雜度:O(N)
  • 輪詢,採用輪詢的方式來檢測就緒事件
  • 演算法時間複雜度:O(N)
  • 回撥,採用回撥的方式檢測就緒事件
  • 演算法時間複雜度:O(1)