面试题答案
一键面试select缺点
- 文件描述符数量限制:在Linux系统中,select的文件描述符数量默认限制为1024,虽然可以通过修改宏定义等方式扩大,但并不方便,在处理大规模并发连接时受限。
- 线性扫描效率低:select采用线性扫描文件描述符集合的方式,检查是否有事件发生,随着文件描述符数量增多,时间复杂度为O(n),性能会显著下降。
- 数据传递方式低效:每次调用select时,需要将用户态的文件描述符集合拷贝到内核态,返回时又要将结果从内核态拷贝回用户态,增加了系统开销。
poll缺点
- 线性扫描性能问题:poll同样采用线性扫描文件描述符链表的方式来检查事件,随着文件描述符数量增加,时间复杂度也是O(n),在高并发场景下效率较低。
- 内核用户态数据拷贝:与select类似,每次调用poll都需要在内核态和用户态之间拷贝数据,增加了系统开销。