epoll

来源:互联网 发布:e4a怎么写入数据库 编辑:程序博客网 时间:2024/05/22 10:36

程式界面

int epoll_create(int size);

建立epoll物件并回传其描述子。

int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);

将要交由核心管控的档案描述子加入epoll物件并设定触发条件。

int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);

等待已注册之事件被触发或计时终了。

触发模式

epoll提供edge-triggered及level-triggered模式。在edge-trigger模式中,epoll_wait仅会在新的事件首次被加入epoll 物件时返回;于level-triggered模式下,epoll_wait在事件状态未变更前将不断被触发。

举例来说,倘若有一个已经于epoll注册之管线接获资料,epoll_wait将返回,并发出资料读取的信号。现假设缓冲区的资料仅有部分被读取并处理,在level-triggered模式下,任何对epoll_wait之呼叫都将即刻返回,直到缓冲区中的资料全部被读取;然而,在edge-triggered的情境下,epoll_wait仅会于再次接收到新资料(亦即,新资料被写入管线)时返回。

相关条目

  • kqueue
  • libevent
  • I/O Completion Ports

参考资料

  1. ^http://www.kernel.org/doc/man-pages/online/pages/man4/epoll.4.html
  2. ^http://kovyrin.net/2006/04/13/epoll-asynchronous-network-programming
0 0
原创粉丝点击