【网络】select模型基本概念!!

本文介绍了select模型,一种可以同时处理多个IO请求的技术。它通过注册多个socket并使用select函数来检测就绪的文件描述符。文章详细阐述了select的API、参数、位图表示法以及对带外数据的处理,帮助读者深入理解select在处理网络连接中的工作原理。

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

select模型

select机制
当使用read等系统调用在缓冲区里面读取数据的时候,如果和缓冲区里面没有数据,那么函数会被系统直接挂起等待,这种函数称之为阻塞式接口。如果缓冲区内一直没有数据那么该系统调用会一直阻塞,知道缓冲区内有可读数据。使用select函数的时候,select可以注册多个需要执行IO的socket,并不断的调用select读取被激活的socket,即在一个线程上面可以同时处理多个IO请求。
这里写图片描述
select相关的API

#include <sys/select.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
int select(int maxfdp, fd_set *readset, fd_set *writeset, fd_set *exceptset,struct timeval *timeout);

参数说明:
- maxfd:被监听的文件描述符的总数
- readset、writeset、exceptset分别对应着可读、可写、异常等事件对应的文件描述符集
- timeout:select函数的超时时间
- timeval结构体:

struct timeval
{      
    long tv_sec;   /*秒 */
    long tv_usec;  /*微秒 */   
};

- 返回值:如果超时返回0,失败返回-1,>0表示就绪的文件描述符的个数。
操作文件文件描述符集的宏

<
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值