linux io

在这里插入图片描述
在这里插入图片描述

同步非阻塞io:数据未准备好则轮询,准备好后需阻塞完成拷贝
io复用:两段阻塞过程,select,poll,epoll
信号驱动io:很少用
aio:唯一的异步io,其余都是同步io(需用户主动发起阻塞的拷贝操作),内核拷贝完成后通知用户

netty在创建EventLoopGroup可以传入SelectorProvider或使用默认的SelectorProvider.provider(),SelectorProvider.provider()会判断linux >= 2.6 使用epoll,否则poll

netty其实基于同步io(nio和io复用),但我们说netty是异步事件驱动,此处异步指对用户来说,io操作是异步的,立即返回的,通过future进行通知的。

select和poll相似:fd集合拷贝至内核空间,先轮询fd集合(1 当前进程挂到fd(设备)的等待队列 2 返回fd的就绪状态),轮询有就绪的就返回,无就绪则睡眠,任一fd就绪唤醒进程,醒来后轮询fd集合找出所有就绪的。
select默认支持fd为1024,poll无限制,fd集合的结构有点不同。
epoll:
epoll_create:创建一个epoll句柄
epoll_ctl:注册要监听的事件类型
epoll_wait:等待事件产生
拷贝发生在epoll_ctl注册时,而不是select/poll的每次等待都拷贝
当前进程挂到fd等待队列发生在epoll_ctl时且指定回调函数,fd就绪调用回调函数把fd放入就绪链表,当前进程无需轮询,只需看就绪链表是否有内容
支持的fd无限制。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值