man 7 epoll的翻譯,一部分是自己的理解;如果有人覺得不對,敬請指正。epoll實現了I/O事件通知功能,具體功能類似於poll(你可以認為是擴展的poll–extended poll):
監視多個文件描述符,並監測其I/O事件是否發生,比如可讀、可寫等。
它對監測大規模的文件描述符有很好的擴展性。
epoll 提供如下API:
(I)epoll_create 創建epoll實例,並返回一個引用到該實例的文件描述符(內核新增epoll_create1對epoll_create的功能做了擴展);
(II)epoll_ctl 將我們感興趣(需要監測)的文件描述符注冊到epoll實例;
(III)epoll_wait等待I/O事件,如果沒有感興趣的I/O事件發生,阻塞調用線程 (阻塞的時間和具體參數有關系)。
其中 需要注意的是,epoll API 的使用分為兩種情況:
(I)邊緣觸發(Edge-Triggered Interface)
(II)水平觸發(Level-Triggered Interface)
二者區別下文再繼續分析。
和epoll相關的數據結構和函數定義在
sys/epoll.h文件裡。
PS:這個博客還沒有寫完,待續。