1. 程式人生 > >linux中的select和epoll

linux中的select和epoll

select

select能監控的描述符個數由核心中的FD_SETSIZE限制,僅為1024,即使能重新編譯核心改變FD_SETSIZE的值(比如poll),但不能提高select的效能。
每次呼叫都掃描所有描述符的狀態,在高併發下有可能有未處理的連線等待超時,此時效能較低。

epoll

epoll維護的描述符數目不受到限制,而且效能不會隨著描述符數目的增加而下降。
epoll維護著大量連線,先通過epoll_ctl註冊一個描述符到核心中, 在描述符讀寫就緒時,通過回掉函式將自己加入就緒佇列中,之後epoll_wait返回該就緒佇列