ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

聊聊BIO、NIO、AIO分别都是啥?有什么区别?

2021-06-30 11:03:50  阅读:213  来源: 互联网

标签:BIO 操作系统 异步 AIO 线程 channel NIO


BIO的网络通信原理

BIO的特点就是每次一个客户端接入,都要在服务端创建一个线程来服务于这个客户端,所以如果有很多个客户端,就会对应成千上万个服务端线程,这会导致服务端负载过高,甚至卡死。
在这里插入图片描述

NIO的网络通信原理

1.一个客户端会对应一个channel,然后多路复用器selector会轮询channel
2. 然后当有请求过来的时候,selector才会去创建工作线程与buffer,
3. 工作线程会通过buffer从channel中读取请求并进行处理
4. 然后处理完成后再通过buffer将数据返回给channel,当请求读写完成后会释放这个线程
在这里插入图片描述

AIO通信原理

与NIO是类似的,但是它是异步非阻塞的,也就是说当有请求过来的时候,工作线程会通知操作系统异步去读,然后就可以去干别的事,等操作系统完成数据读取之后,就会回调接口,给你操作系统异步读完的数据。

三者之间的区别:
BIO是同步阻塞,NIO是同步非阻塞,AIO是异步非阻塞,而这些都是针对文件IO的读写操作,这里的阻塞指的是线程发起读写请求之后,是不是阻塞住的,是不是可以干别的事。而异步与同步其实是说操作系统之间,同步就是还得主动去轮询操作系统,异步就是操作系统反过来通知你。

 

 

本文链接:https://blog.csdn.net/m0_37900506/article/details/114214188

 

标签:BIO,操作系统,异步,AIO,线程,channel,NIO
来源: https://www.cnblogs.com/moreLuo/p/14953440.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有