BIO\NIO\AIO记录
2016-08-17 22:15
330 查看
IO操作可以分为3类:同步阻塞(BIO)、同步非阻塞(NIO)、异步(AIO)。
同步阻塞(BIO):
在此种方式下,用户线程发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户线程才能做后续的事情。
同步非阻塞(NIO):
在此种方式下,用户线程发起一个IO操作以后,可返回做其它事情,但是用户线程需要时不时的询问IO操作是否完成,从而引入了不必要的CPU资源浪费。Java中的Netty使用的是NIO。
异步(AIO):
在此种方式下,用户线程发起一个IO操作以后,可返回做其它事情,也不需要时不时的询问IO操作是否完成,因为操作系统内核完成IO操作以后会主动通知用户线程。.NET中的SocketAsyncEventArgs实现了IOCP,IOCP是一种AIO。
同步阻塞(BIO):
在此种方式下,用户线程发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户线程才能做后续的事情。
同步非阻塞(NIO):
在此种方式下,用户线程发起一个IO操作以后,可返回做其它事情,但是用户线程需要时不时的询问IO操作是否完成,从而引入了不必要的CPU资源浪费。Java中的Netty使用的是NIO。
异步(AIO):
在此种方式下,用户线程发起一个IO操作以后,可返回做其它事情,也不需要时不时的询问IO操作是否完成,因为操作系统内核完成IO操作以后会主动通知用户线程。.NET中的SocketAsyncEventArgs实现了IOCP,IOCP是一种AIO。
相关文章推荐
- 巨头纷纷进击人工智能,看华为小米们如何探索未来
- 【codeforces】29C—Mail Stamps
- Thumbnails操作图片发红的问题解决
- UVA-442 Matrix Chain Multiplication
- 【USACO题库】5.2.1 Snail Trails蜗牛的旅行
- 木雨音乐 项目开发(三)主界面MainActivity
- Lock锁,一次唤醒所有线程低性能的问题
- 多个线程执行多个任务,解决该问题的死锁问题
- IO流——数据类型处理流(DataInputStream和DataOutputStream)
- sleep和wait有什么区别?
- AI,DM,ML,PR的区别与联系
- AIDL(续)
- ActivityThread——main方法
- AIX信號初探
- 错误:bject contains invalid bitcode
- MFC的BeginWaitCursor和EndWaitCursor函数
- HDU2476——String painter(区间dp)
- Mac下首次安装tensorflow运行时会出现ImportError: numpy.core.multiarray failed to import的解决方案
- 防止出现 Capturing 'self' strongly in this block is likely to lead to a retain cycle [duplicate]
- BoxCars: 3D Boxes as CNN Input for Improved Fine-Grained Vehicle Recognition