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

BIO、NIO、AIO的形象比喻

时间:2020-01-15 12:18:19      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:blocking   提高   locking   比较   同步阻塞   没有   检查   开始   nio   

BIO (Blocking I/O):同步阻塞I/O模式。

NIO (New I/O):同步非阻塞模式。

AIO (Asynchronous I/O):异步非阻塞I/O模型。

先看阻塞和非阻塞的区别,以烧水为例:

阻塞VS非阻塞:人是否坐在水壶前面一直等。

同步VS异步:水壶是不是在水烧开之后主动通知人。

再加上同步、异步,有如下三种情况:

1.同步阻塞模式:我们的工作模式是先来到厨房,开始烧水,并坐在水壶面前一直等着水烧开。

2.同步非阻塞模式:我们的工作模式是先来到厨房,开始烧水,但是我们不一直坐在水壶前面等,而是回到客厅看电视,然后每隔1分钟左右到厨房看一下水有没有烧开。

3.异步非阻塞I/O模型:我们的工作模式是先来到厨房,开始烧水,我们不一直坐在水壶前面等水烧开,也不隔一段时间去看一下,而是在客厅看电视,水壶上面有个开关,水烧开之后他会通知我。

由此,如果水很快烧开,比如只用1秒钟,那么第1种模式,就非常简单和快速了,一气呵成。

如果水需要1分钟左右烧开,那么第1种就需要一直守着水壶,期间无法做其他的事,第2种模式就比第一种轻松。

如果水需要10分钟烧开,那么第1种就非常不轻松了,第二种就需要来回检查水是否烧开了,来回次数比较多,而且可能已经烧开了,但却不知道,存在溢出的可能。

第三种此值就很方便了,不需要多次往返检查,只需要接收水壶发出的通知,效率大大的提高了。

BIO、NIO、AIO的形象比喻

标签:blocking   提高   locking   比较   同步阻塞   没有   检查   开始   nio   

原文地址:https://www.cnblogs.com/qujiayuan/p/12195680.html

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