什么是epoll
多路复用io接口select/poll的增强版本,显著提高程序在大量并发连接中只有少量活跃情况下的cpu利用率
epoll的优缺点
优点
1. 支持大数目的FD
2. IO效率不随FD数量增加而线性下降
3. 使用mmap加速用户空间和内核空间的消息数据传递
缺点
1. 活动连接比较多的时候,频繁调用epoll_await性能会下降明显
epoll的使用
主要函数定义
int epoll_create(int size);
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout);
完整例子
/*
参考:https://linux.die.net/man/4/epoll
*/
#define MAX_EVENTS 10
struct epoll_event ev, events[MAX_EVENTS];
int listen_sock, conn_sock, nfds, epoll