Select、Poll和epoll的区别
时间: 2024-06-11 19:04:05 浏览: 87
linux中 epoll poll 和select的区别
1. I/O模型
- select:采用轮询的方式,对所有文件描述符进行扫描,效率较低。
- poll:采用轮询的方式,对所有文件描述符进行扫描,效率较低。
- epoll:采用事件通知的方式,只对活跃的文件描述符进行扫描,效率较高。
2. 可处理的文件描述符数量
- select:受限于系统最大文件描述符数量,一般为1024。
- poll:受限于系统最大文件描述符数量,一般为65535。
- epoll:没有文件描述符数量限制,支持数百万个文件描述符。
3. 内核空间和用户空间的数据拷贝次数
- select:每次调用都需要将所有文件描述符集合从用户空间拷贝到内核空间,效率较低。
- poll:每次调用都需要将所有文件描述符集合从用户空间拷贝到内核空间,效率较低。
- epoll:只需要将活跃的文件描述符从内核空间拷贝到用户空间,效率较高。
4. 适用场景
- select:适用于文件描述符数量较少的情况,可移植性较好。
- poll:适用于文件描述符数量较少的情况,可移植性较好。
- epoll:适用于文件描述符数量较多的情况,效率较高,但可移植性较差。
阅读全文