当前位置: 首页 > news >正文

泸西网站建设学院网站建设项目

泸西网站建设,学院网站建设项目,wordpress设置不显示摘要,wordpress图片乱码文章目录 select 函数fd_set 类型timeval 结构体select 函数的基本使用流程文件描述符就绪条件以select函数为中心实现多路转接的思路select 缺陷 select 函数 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); selec…

文章目录

  • select 函数
  • fd_set 类型
  • timeval 结构体
  • select 函数的基本使用流程
  • 文件描述符就绪条件
  • 以select函数为中心实现多路转接的思路
  • select 缺陷

select 函数

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

select函数是一个用于多路复用的系统调用,用于监视一组文件描述符(fd_set)的状态变化。它可以同时监视多个文件描述符,等待其中任意一个文件描述符准备好进行读、写或异常处理。

参数说明:

nfds:要监视的文件描述符的最大值加1。
readfds:用于监视可读事件的文件描述符集合。
writefds:用于监视可写事件的文件描述符集合。
exceptfds:用于监视异常事件的文件描述符集合。
timeout:超时时间,指定select函数的阻塞时间,可以设为NULL表示永久阻塞,也可以设为指向timeval结构体的指针,设置超时时间。

fd_set 类型

fd_set是一个用于表示文件描述符集合的数据类型,在C语言中使用。它是一个位图(bitmap)类型,用于在多路复用机制中管理文件描述符的就绪状态。

在使用fd_set类型时,需要使用一些宏函数进行相关操作,如FD_ZERO、FD_SET、FD_CLR和FD_ISSET。

FD_ZERO(fd_set *set):将指定的fd_set集合清空,将所有位都设置为0。
FD_SET(int fd, fd_set *set):将指定的文件描述符fd添加到fd_set集合中。
FD_CLR(int fd, fd_set *set):将指定的文件描述符fd从fd_set集合中移除。
FD_ISSET(int fd, fd_set *set):检查指定的文件描述符fd是否在fd_set集合中,并返回相应的状态。

timeval 结构体

timeval结构体定义如下:

struct timeval {time_t tv_sec;  // 秒数suseconds_t tv_usec;  // 微秒数
};

其中,tv_sec表示秒数,tv_usec表示微秒数。在使用timeval结构体时,可以通过设置tv_sec和tv_usec的值来表示相应的时间。

在多路复用机制中,可以将timeval结构体用作select函数的timeout参数,指定select函数的阻塞时间。如果timeout设置为NULL,select函数将会永久阻塞,直到有文件描述符就绪或被信号中断。如果timeout设置为指向timeval结构体的指针,则select函数会在指定的时间内阻塞,超过指定时间后会返回0。

select 函数的基本使用流程

在这里插入图片描述

文件描述符就绪条件

select函数或其他多路复用机制时,可以通过以下条件来判断一个socket是否就绪:

可读条件(Read-ready):当一个socket上有数据可读时,即接收缓冲区中有数据等待读取,这个socket就被认为是可读的。

可写条件(Write-ready):当一个socket上的发送缓冲区有足够的空间可以写入数据时,这个socket就被认为是可写的。

异常条件(Exceptional condition):当一个socket上发生了异常情况,如带外数据到达或连接错误,这个socket就被认为是异常的。

以select函数为中心实现多路转接的思路

在这里插入图片描述

select 缺陷

每次调用select, 都需要手动设置fd集合, 从接口使用角度来说也非常不便
(体现为需要数组数据结构辅助)
每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大(指select的执行过程)
同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大(指select的执行过程)
select支持的文件描述符数量太小(512 * 8 个bit位)

http://www.yayakq.cn/news/259781/

相关文章:

  • 有自己的域名怎么建设网站做魔杖网站
  • 公司做网站一般大型电子商务网站建设方案
  • 网站建设 开发的团队需要几个人寿光建设银行光明路网站
  • 松江网站建设多少钱深圳网站制作搜行者seo
  • 深圳专业建设网站服务温州网页制作设计
  • 汉沽集团网站建设山东鲁为建设集团网站
  • 国内net开发的网站建设账号权重查询入口
  • 如何在外管局网站做延期阿里云的wordpress建站
  • 医疗企业网站模板盐城seo营销
  • 重庆奉节网站建设公司哪里有dedecms中英文网站
  • 有什么网站是做兼职的正能量免费下载
  • 站长统计导航窗口wordpress主题评论
  • asp技术网站开发案例做网站安全联盟解
  • 怎么做网站地图导航北京网站设计公司兴田德润怎么样
  • wap网站开发实例开发公司代收业主契税如何记账
  • 网站开发与网页设计大作业合肥网页设计培训学校
  • 个人做网站 用什么语言网站建立需要多少钱
  • 昆明网站关键字优化专门卖化妆品网站建设
  • 网站设计需要什么专业视频网站备案怎么做
  • 网站的空间和域名是啥海外网站空间
  • 天津建立网站营销设计重庆工程建设信息查询
  • 淘宝客网站模板有哪些wordpress无法显示文章
  • 文化厅加强网站建设建筑八大员报名网站
  • 网站建设策划表官方网站有哪些
  • 合肥高新区建设发展局网站做网站,就上凡科建站
  • 房地产广告设计网站注册网站域名需要什么
  • 单位网站建设建议对策哈尔滨企业做网站
  • 建设银行义乌分行网站南昌地宝网租房个人房源
  • 我学的 网站开发 能进华为公司么施工企业项目管理系统
  • 大理网站推广网站更新的意义