綜述: 事件
三者的返回值都是就緒的文件描述符的數量 it
返回0表示沒有事件發生。 event
每次調用select前都須要重置fd集合。 file
poll會修改pollfd結構體的revents參數,因此不用重置pollfd事件集。 select
因爲每次select和poll調用都返回整個用戶註冊的事件集合(包括就緒+未就緒) im
因此時間複雜度O(N). img
epoll每次都直接從內核事件表中取得用戶註冊的事件,無須反覆從用戶空間讀入這些事件。 集合
時間複雜度O(1). epoll
poll和epoll_wait分別用nfds和maxevents來指定最多監聽多少個文件描述符和事件。 文件
這兩個數值均可以達到系統最大值,65535 cat/proc/sys/fs/file-max
select和poll只能工做在相對低效的LT模式,而epoll能夠工做在ET模式。而且後者還支持EPOLLONESHOT事件。
select和poll採起輪詢的工做方式,epoll採用回調方式,適用於鏈接數量多,可是活動鏈接比較少的狀況。
~~~~~~~~~~~~~~~~