MST

星途 面试题库

面试题:网络编程中select、poll处理TCP连接的缺点

在网络编程处理TCP连接场景下,请阐述select和poll这两种多路复用技术存在哪些缺点?
14.6万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

select缺点

  1. 文件描述符数量限制:在Linux系统中,select的文件描述符数量默认限制为1024,虽然可以通过修改宏定义等方式扩大,但并不方便,在处理大规模并发连接时受限。
  2. 线性扫描效率低:select采用线性扫描文件描述符集合的方式,检查是否有事件发生,随着文件描述符数量增多,时间复杂度为O(n),性能会显著下降。
  3. 数据传递方式低效:每次调用select时,需要将用户态的文件描述符集合拷贝到内核态,返回时又要将结果从内核态拷贝回用户态,增加了系统开销。

poll缺点

  1. 线性扫描性能问题:poll同样采用线性扫描文件描述符链表的方式来检查事件,随着文件描述符数量增加,时间复杂度也是O(n),在高并发场景下效率较低。
  2. 内核用户态数据拷贝:与select类似,每次调用poll都需要在内核态和用户态之间拷贝数据,增加了系统开销。