Epoll

epoll是Linux核心的可擴展I / O事件通知機制 。 於Linux 2.5.44 首度登場 ， 它設計目的旨在取代既有POSIX select ( 2 ) 與poll ( 2 ) 系統函式 ， 讓需要大量操作檔案描述子的程式得以發揮更優異的性能 （ 舉例來說 ： 舊有的系統函式所花費的時間複雜度爲O ( n ) ， epoll的時間複雜度O ( log n ) ） 。 epoll 實現的功能與 poll 類似 ， 都是監聽多個文件描述符上的事件 。 epoll與FreeBSD的kqueue類似 ， 底層都是由可組態的作業系統核心物件建構而成 ， 並以檔案描述符 ( file descriptor ) 的形式呈現於使用者空間 。 epoll 通過使用紅黑樹 ( RB - tree ) 搜索被監視的檔案描述符 ( file descriptor ) 。 在 epoll 實例上註冊事件時 ， epoll 會將該事件添加到 epoll 實例的紅黑樹上並註冊一個回調函數 ， 當事件發生時會將事件添加到就緒鏈表中 。