在Linux上,epoll是一种必须用到的IO复用的方式。
epoll是Linux内核针对select和poll做的改进。
Linux的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);
epoll的方式主要有LT和ET两种方式。
LT是Level Trigger的简写,意思为水平触发;
ET是Edge Trigger的简写,意思为边缘出发。
LT和ET的区别是:
1)LT是默认方式,如果文件句柄还有数据,则会每次进行读取;
2)ET工作方式,会一次读完;
3)用LT方式,尽量让数据读完,不要让IO再扫描程序;
4)ET工作方式,保证缓冲区空间足够。