I/O模型之A、B、C、D、E、F、G去火锅店吃火锅

目录

BIO Blocking I/O 即同步阻塞I/O

NIO Non-Blocking I/O 即同步非阻塞I/O

I/O多路复用

AIO Asynchronous I/O 异步I/O

总结


I/O:Input和Output

BIO Blocking I/O 即同步阻塞I/O

应用程序发起read调用后,一直会阻塞,直到系统内核将数据拷贝给应用程序。

缺点:一直阻塞,不能应对高并发场景。

NIO Non-Blocking I/O 即同步非阻塞I/O

应用程序会一直发起read调用,一直到系统内核将数据拷贝给应用程序。

缺点:在内核拷贝数据到应用程序之前,依旧是阻塞的,而且多次发起read调用会占用CPU资源。

I/O多路复用

多路复用 通过一个选择器实现一个线程可以管理多个客户端,只有数据到达之后才会为其服务,

 

信号驱动I/O

主要依靠信号驱动,应用程序发送信号直接返回,不阻塞,内核准备好数据之后发送信号,应用程序再来读取数据,读取数据过程中还是阻塞的。

AIO Asynchronous I/O 异步I/O

应用程序发起read调用,会直接返回,去执行其他操作,等待内核准备好数据,直接回调应用程序的方法将数据交给应用程序。

总结(吃火锅)

看到一个例子结合自己理解分享给大家

场景:A、B、C、D、E、F、G去火锅店吃火锅,需要等位,他们都需要取号。

BIO:A取上号一直在等,直到排队到号,才吃上火锅。

NIO:B取上号就在周围逛,过一会来看一下到没到号,直到到号才吃上火锅。

多路复用:有一个跑腿,在同时帮助C、D、E去看一下有没有到号,假如D到号了,D去吃火锅,并且这个选择器在D吃火锅期间,都是在为D服务的,跑腿是专业的。

信号驱动I/O: F给店长打个电话,帮F取号,等到号了,店长给F打电话,你可以来吃火锅了。

AIO:G取上号,店长说你是至尊VIP,你留个地址,这边做好给你送过去,G就去干其他的事情,后面做好直接送到预留的地址。

还是你至尊黄红蓝黑红铂星VIP最舒服了!

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值