I/O多路转接select/poll/epoll模型

本文详细介绍了I/O多路转接的三种模型:select、poll和epoll。select在处理大量文件描述符时存在性能问题,poll解决了最大描述符限制但仍有拷贝和轮询开销。epoll则采用红黑树存储描述符,支持事件就绪通知,并有两种工作模式:水平触发和边缘触发,适用于高性能服务器。
摘要由CSDN通过智能技术生成

I/O多路转接(select/poll/epoll)

1、I/O多路转接select

系统提供select函数实现多路复用的输入输出模型

select系统调用让程序监视多个文件描述符的状态变化,程序会暂停到select这里等待,直到被监视的文件描述符发送了状态变化

#include<sys/select.h>  //头文件

int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
struct timeval *timeout )

参数解释:
nfds:用来限定监视区间(最大文件描述符+1rdset: 检测读事件的文件描述符集合
wrset:检测写事件的文件描述符集合
exset:检测异常事件的文件描述符集合
timeout:设置select的等待时间

timeout取值

NULL:一直被阻塞直接文件描述发生变化
0:检测文件描述符状态立即返回
特定时间:等待时间

fd_set结构 //位图(取fd_set为一个字节,每一bit对应一个文件描述符fd)
提供操作fd_set的一组接口,来操作位图

void FD_CLR(int<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值