函数定义如下:
int tk_epoll_wait(int epoll_fd, struct epoll_event* events, int max_events, int timeout) {
int ret_count = epoll_wait(epoll_fd, events, max_events, timeout);
return ret_count;
}
main.c中对该函数的调用代码如下:
while (1) {
// 得到最近且未删除时间和当前时间差值(等待时间)
int time = tk_find_timer();
// 调用epoll_wait函数,返回接收到事件的数量
int events_num = tk_epoll_wait(epoll_fd, events, MAXEVENTS, -1);
// 处理已经超时的请求
tk_handle_expire_timers();
// 遍历events数组,根据监听种类及描述符类型分发操作
tk_handle_events(epoll_fd, listen_fd, events, events_num, conf.root, tp);
}
该函数主要用于返回接收到事件的数量。
epoll_wait函数详解:
函数声明:int epoll_wait(int epfd,struct epoll_event * events,int maxevents,int timeout)
该函数用于轮询I/O事件的发生;
参数:
epoll_fd:由epoll_create 生成的epoll专用的文件描述符;
events:用于回传代处理事件的数组;
MAXEVENTS:每次能处理的事件数;
timeout:等待I/O事件发生的超时值:-1意味着一直等待直到事件发生,0则立刻返回,正数表示等待时间