勵志

勵志人生知識庫

epoll是什麼

epollLinux系統中一種高效的I/O事件通知機制,用於處理大量文件描述符。

epoll是Linux內核爲處理大批量文件描述符而作的改進的poll,是Linux下多路複用IO接口select/poll的增強版本。Epoll能顯著提高程序在大量併發連接中只有少量活躍的情況下的系統CPU利用率。

它是Linux特有的一種I/O多路複用的機制,最初出現在Linux操作系統中,用於高效地管理大量的文件描述符(如sockets、files、pipes等),監視它們的狀態變化,以便進行非阻塞的I/O操作。Epoll提供了三個系統調用來創建和管理epoll實例:epoll_create、epoll_ctl和epoll_wait。

此外,epoll有兩種工作方式:水平觸發(Level Triggered, LT)和邊沿觸發(Edge Triggered, ET)。水平觸發是默認的工作方式,支持block和no-block socket。在這種模式下,內核會持續通知一箇文件描述符的狀態變化,即使沒有進行任何操作。相比之下,邊沿觸發模式更爲高效,因爲它只在文件描述符狀態發生變化時才觸發事件。