Java学习-20230502

1,IO

BIO   内核态数据拷贝到用户态,阻塞线程

NIO  同步非阻塞:read后不阻塞,不断轮训recvfrom状态

        IO多路复用:select/poll/epoll  .select 一次可以查询多个系统调用的状态,在用户态操作,将fds 传给内核,查询是否就绪,但是内核态的复杂度是O(n)。epoll在内核态中存储了fd的信息,如果就绪会回调注册函数,将就绪的fd放到rdlist中。epoll_create,epoll_ctl,epoll_wait

        IO 多路复用模型中,线程首先发起 select 调用,询问内核数据是否准备就绪,等内核把数据准备好了,用户线程再发起 read 调用。read 调用的过程(数据从内核空间 -> 用户空间)还是阻塞的。

目前支持 IO 多路复用的系统调用,有 select,epoll 等等。select 系统调用,目前几乎在所有的操作系统上都有支持。

  • select 调用 :内核提供的系统调用,它支持一次查询多个系统调用的可用状态。几乎所有的操作系统都支持。
  • epoll 调用 :linux 2.6 内核,属于 select 调用的增强版本,优化了 IO 的执行效率。

AIO 通知回调 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值