select:表
1.最多只能监听1024个文件描述
2.用户空间的表会被清空,需要反复构造文件描述符的表,需要反复从用户空间向内核空间拷贝表效率低
3.当select进程休眠被唤醒之后,需要再次编译文件描述符的表,找出准备好的文件描述符,效率比较低。
poll:结构体数组
1.poll监听的文件描述符没有个数限制
2.poll的表不会被清空,不需要反复拷贝文件描述符,效率比较高。
3.当poll进程休眠被唤醒之后,需要再次编译文件描述符的表,找出准备好的文件描述符,效率比较低。
epoll:红黑树
1.epoll监听的文件描述符没有个数限制
2.epoll的表不会被清空,不需要反复拷贝文件描述符,效率比较高。
3.当epoll进程休眠被唤醒之后,能直接拿到准备好的文件描述符,不需要遍历,效率高。