• 首页
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案
目录

epoll、poll、select有哪些区别

epoll、poll、select的区别是:1、内核支持;2、系统调用数量;3、文件描述符数量;4、数据结构;5、触发模式。select是最古老的多路复用机制,它早于Linux的内核版本2.0,已经成为了Unix网络编程中经典的多路复用机制。

一、epoll、poll、select的区别

1、内核支持

select是最古老的多路复用机制,它早于Linux的内核版本2.0,已经成为了Unix网络编程中经典的多路复用机制。poll是在Linux内核2.1.15中引入的一种多路复用机制,它比select更加高效。而epoll是在Linux内核2.5.44中引入的一种更加高效的多路复用机制,它是目前最常用的多路复用机制之一。

2、系统调用数量

select和poll在使用时,每次都需要将所有待监视的文件描述符从用户空间复制到内核空间,而epoll使用了事件驱动的方式,将只有活跃的文件描述符加入到内核事件表中。因此,在处理大量文件描述符时,epoll比select和poll更快,能够提供更高的并发性和更好的性能。

3、文件描述符数量

select和poll在处理大量的文件描述符时,随着文件描述符数量的增加,性能会呈现出线性下降的趋势。而epoll能够高效地处理大量的文件描述符,并且在文件描述符数量很大时,性能损失很小。

4、数据结构

select和poll将所有待监视的文件描述符保存在一个数据结构中,而epoll将文件描述符分散到不同的事件集合中。因此,在处理大量文件描述符时,epoll的效率比select和poll更高。

5、触发模式

select和poll是水平触发(level-triggered)模式,即当文件描述符可读可写时,每次调用select或poll都会通知应用程序。而epoll支持水平触发和边缘触发(edge-triggered)两种模式,边缘触发只会通知应用程序一次,直到下一次事件发生时才会再次通知。边缘触发模式在处理大量的文件描述符时,能够提高效率。

相关文章