linux下几种IO多路复用方式的总结

• select
	○ 触发机制
		§ 条件触发
	○ 描述符
		§ 三种类型
			□ 可读
			□ 可写
			□ 异常
		§ 默认最大1024个
		§ 每次响应之后会改变描述符集合,需要手动重置
	○ 检测结果
		§ 需要用FD_ISSET对每个描述符进行判断
• poll
	○ 触发机制
		§ 条件触发
	○ 描述符
		§ 个数没有限制
		§ 用结构体pollfd表示
			□ 包含文件描述符、待检测的事件类型、返回事件类型
			□ 通过二进制掩码对事件类型和返回类型进行操作
			□ 若不想检测,可将fd设置为-1
		§ 类型
			□ 可读
			□ 可写
			□ 错误(无法提交检测请求,只能通过返回事件检测)
		§ 可以控制pollfd数组的大小,从而动态控制检测的数量
	○ 返回值
		§ -1:有错误
		§ 0:超时且没有任何事件发生
		§ n:检测到的事件的个数
	○ 检测结果
		§ 会返回检测到事件的个数,但仍然需要遍历pollfd数组获取结果,数组中不一定都是发生了事件
• epoll
	○ 触发机制
		§ 默认条件触发
		§ 可设置为边缘触发
	○ 事件类型
		§ 可读
		§ 可写
		§ 套接字一端关闭,或者半关闭
		§ 文件描述符被挂起
		§ 边缘触发
	○ 返回值
		§ -1:有错误
		§ 0:超时且没有任何事件发生
		§ n:发生的事件的个数
	○ 检测结果
		§ 返回的epoll_event数组大小由n决定,只需遍历大小等于实际事件发生数量的数组即可,数组中都是发生了的事件
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值