IO复用的三种方法(select,poll,epoll)深入理解,包括三者区别,内部原理实现?
-
调用函数
- lect和poll都是一个单独的函数,epoll是一组函数。
-
文件描述符数量
- select通过线性表描述文件描述符集合,文件描述符有上限,一般是1024,但可以修改源码,重新编译内核,不推荐;
- poll是链表描述,突破了文件描述符上限,最大可以打开文件的数目;
- epoll通过红黑树描述,最大可以打开文件的数目,可以通过命令ulimit -n number修改,仅对当前终端有效。
-
将文件描述符从用户传给内核