IO多路转接之select

本文介绍了IO多路转接中的select函数,详细讲解了其工作原理、参数含义以及socket的就绪条件。讨论了select的缺点,如需要手动设置fd集合、大量fd拷贝开销以及支持的文件描述符数量有限。
摘要由CSDN通过智能技术生成

IO多路转接之select

初识select

系统提供select 函数来实现多路复用输入/输出模型
- select系统调用是用来让程序监视多个文件描述符的状态变化;
- 程序会停在select这里等待,直到被监视的文件描述符有一个或多个发生了状态改变。

select 函数

函数原型:

#include <sys/select.h>

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

参数解释:
1. nfds:是需要监视的最大文件描述符值+1;nfds 提高了遍历的效率。
这里写图片描述
2. rdset,wrset,exset分别对应于需要检测的可读文件描述符的集合、可写文件描述符的集合及异常文件描述符的集合;fd_set 是基于位图实现的结构体;*readfds 是读就绪、*writefds 是写就绪、*exceptfds 是异常就绪;
3. 参数 timeout 为结构 timeval,用来设置 select() 的等待时间。

    参数timeout 的取值:
    - NULL:表 select() 没有 timeout,select 将一
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值