本文参考Linux高性能服务器编程-游双
epoll:
步骤:
1.创建树
2.上树
3.监听
特点:
没有文件描述符限制,函数返回就是需要处理的文件描述符,不需要遍历
工作原理:
实现:
1.创建红黑树
#include<sys/epoll.h>
int epoll_create(int size);
参数:
size:监听的文件描述符的上限
返回值:返回树的句柄
2.上树,下树和修改
int epoll_ctl(int epfd,int op,int fd,struct epoll_event* event);
参数:
efpd:树的句柄
op:EPOLL_CTL_ADD 上树 EPOLL_CTL_DEL 下树 EPOLL_CTL_MODE 修改
fd:上树下树的文件描述符
event:包含事件(读还是写)
int epoll_wait(int epfd,struct epoll_event* events,int maxevents,int timeout)
epfd:句柄
events:接收变化的节点的数组的首地址
maxevents:数组元素的个数
timeout:-1永久监听 大于等于0限时等待