码迷,mamicode.com
首页 > 其他好文 > 详细

BIO、NIO、AIO三者的比较

时间:2017-05-19 13:30:47      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:操作系统   系统通信   同步   方法   需要   系统   读取   基于   bsp   

消息时的系统通信,通常基于网络协议实现。常见的协议包括TCP/IP,UDP/IP。

TCP/IP等协议用于数据传输,但要完成通信,还需要对数据进行处理。例如读取和写入数据。

I/O可以分为两种:同步IO和异步IO,同步I/O最常见的是 BIO(Blocking IO)、NIO(Non-Blocking IO)

BIO:是当发起I/O的读或写操作时,均为阻塞方式,直到应用程序读到了流或者将流写入数据。

NIO:基于事件驱动思想,常采用reactor(反应器)模式。当发起 IO请求时,应用程序是非阻塞的。当SOCKET有流可读或写的时候,

由操作系统通知应用程序,应用程序再将流读取到缓冲区或者写入系统。

AIO:同样基于事件驱动的思想,通常采用Proactor(前摄器模式)实现。在进行I/O操作时,直接调用API的read或write,这两种方法

均为异步。对于读操作,操作系统将数据读到缓冲区,并通知应用程序,对于写操作,操作系统将write方法传递的流写入并主动通知

应用程序。它节省了NIO中遍历事件通知队列的代价。

 

这里注意比较NIO和AIO的不同,AIO是操作系统完成IO并通知应用程序,NIO是操作系统通知应用程序,由应用程序完成。

BIO、NIO、AIO三者的比较

标签:操作系统   系统通信   同步   方法   需要   系统   读取   基于   bsp   

原文地址:http://www.cnblogs.com/zhangjwcode/p/6877848.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!