IO 多路复用 select poll epoll

该文章参考总结B站视频【并发】IO多路复用select/poll/epoll介绍

IO多路复用

单个线程,通过记录跟踪每个I/O流的状态,来同时管理多个I/O流

实现

select

原理

在这里插入图片描述

虚线上为文件描述符号集合fds(即网络连接集合)和记录最大文件描述符准备阶段
遍历fds,准备对应的rset,rset为一个bitmap ,大小为1024
比如:fds为1、2、5、7、9,则对应的bitmap为011001010100…
select(max+1,&rset,null,null,null)
max+1的作用是操作内核轮询bitmap时进行卡位操作,即轮询的范围
在这里插入图片描述
select会将rset拷贝到操作内核中对其进行一个轮询操作,如果有数据则将有数据的位(操作rset)进行置位操作并返回继续运行下面代码,无数据则阻塞
有数据:
遍历文件描述符集合(与rest做比较),找出有数据的那个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值