歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

linux epoll 簡介

1. linux epoll簡介

本文簡單介紹linux epoll功能,大部分內容是
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
文件裡。

2. 水平觸發(Level-triggered)和邊緣觸發(Edge-triggered)

epoll 事件分發接口分為兩種,一個是水平觸發(LT),一個是邊緣觸發(ET)。兩種機制的區別如下所述。假定場景如下:

PS:這個博客還沒有寫完,待續。

Copyright © Linux教程網 All Rights Reserved