select模型,poll模型,epoll模型对比

本文详细分析了Linux中select、poll和epoll三种I/O模型的性能和特点,包括它们对最大连接数的支持、IO效率、文件描述符拷贝等方面。特别强调了epoll的事件通知方式以及边缘触发模式,通过模拟不同场景展示了EPOLLIN、EPOLLOUT事件的触发条件。最后给出了针对EPOLLOUT的注册建议,提倡按需注册和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select模型,poll模型,epoll模型对比

     select    poll    epoll
支持最大连接数    1024    无上限    无上限
IO效率    每次调用都要进行遍历,时间复杂度O(n)    每次调用都要进行遍历,时间复杂度O(n)    使用事件通知方式,每当fd就绪,系统注册的回调函数就会被调用,将就绪fd放到rdllist里面,这样epoll_wait返回的时候我们就拿到了就绪的fd,时间复杂度O(1)
fd拷贝    每次select都拷贝,fd数组    每次poll都拷贝fd数组    调用epoll_ctl时拷贝进内核并由内核保存,之后每次epoll_wait不拷贝
    本篇主要分析epoll边缘触发,通过模拟各种场景,来介绍EPOLLOUT,不涉及epoll底层源码实现。

一、序
epoll_wait返回的条件

1、等待时间到期

2、发生信号事件,例如ctrl+c

3、The associated file is available for read(2) operations,如果注册了EPOLLIN, socket接收缓冲区,有新的数据到来

4、The associated file is available for write(2) operations,如果注册了EPOLLOUT࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员乐逍遥

如果你觉得帮助了你,支持一下!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值