BIO、NIO、AIO的区别
2024-08-31 10:57:07
一、基本概念
1.BIO:同步阻塞IO
2.NIO:同步非阻塞IO
3.AIO:异步阻塞IO
IO操作包括两部分,发起IO请求、IO数据读写。阻塞非阻塞主要针对线程发起IO请求之后是否立即返回来定义的,立即返回成为称为非阻塞IO,否则为阻塞IO。同步异步针对IO数据读写来定义的,不阻塞线程称为异步IO,否则为同步IO。
BIO工作原理:线程发起IO请求之后,一直阻塞,直到数据就绪后将数据写入socket空间或从socket空间读取数据。
NIO工作原理:线程发起IO请求后,立即返回,但需定时轮询去检查数据是够就绪,就绪后才将数据写入socket空间或从socket空间读取数据。
IO多路复用(NIO):上述NIO实现中,需要用户线程定时轮训,去检查IO数据是否就绪,占用应用程序线程资源。IO多路复用模型中,将检查IO数据是否就绪的任务,交给系统级别的select或模型,由系统进行监控,减轻用户线程负担。
AIO工作原理:线程发起IO请求后立即返回,当数据读写完成后OS通知用户线程。这里对socket空间数据的读写都是由OS完成的。
参考链接:https://www.cnblogs.com/aspirant/p/6877350.html?utm_source=itdadao&utm_medium=referral
https://my.oschina.net/ljhlgj/blog/1811319
https://www.jianshu.com/p/ef418ccf2f7d
https://segmentfault.com/a/1190000037714804
最新文章
- Android studio .9图片造成的错误总结
- dede完美分页样式
- STM32内存跟FLASH问题
- urllib3 PoolManager
- RMAN 备份与恢复深入解析(二)
- hdoj 2544 最短路【dijkstra or spfa】
- 【原】计算机Tools vs 学习资料
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(43)-工作流设计-字段分类设计
- DooDigestAuth php(后台)授权管理类 web浏览器授权
- Android 原生listview item伸展收缩效果
- JSP标签库
- go get 代理设置
- hibernate总结-持续更新
- 《吸血鬼日记》(The Vampire Diaries)经典台词
- hdu 5480(前缀和)
- Chorme浏览器渲染MathJax时出现竖线的解决方法
- ppt提取文字
- ORM的单表操作
- CNN卷积层:ReLU函数
- Redis went away
热门文章
- [题解]UVA10054 The Necklace
- 拥有自助式BI要摒弃传统BI?
- Docker入坑系列(二)
- XML序列化反序列化
- 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1
- JZ-047-求 1+2+3+...+n
- svelte组件:Svelte3自定义Navbar+Tabbr组件|svelte自定义插件
- PHP防止订单超卖,秒杀,限购,PHP高并发防止超卖代码实践
- tip多文件上传(自找)
- Django-模板布局