在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工作方式,保證緩衝區空間足夠。