IO模型通俗理解

IO模型一般有同步,异步,阻塞,非阻塞四种情况,其他很多回答有很官方的解释,下面我写一点我自己的理解以及通俗的例子解释

首先先制定一下例子的背景:我有一辆车,现在需要交给4S店进行维修,总共需要维修3天。

1:BIO(同步阻塞IO模型)

这个很好理解,同步就是我得等结果,阻塞就是我其他事都不干了,

通俗解释:

        我车坏了,交给4S店维修,然后我人就一直在4S店门口等着不走了,啥事也不干就盯着,然后4天后我车修好了,然后我开着车走了干其他事了

同步阻塞也就是说我发起了请求,那我就必须等到这个请求响应了过后才能够去继续进行其他事情。

2:NIO(同步非阻塞IO模型)

这个目前用的多,也是比较麻烦的一个

通俗解释:

        我车坏了,交给4S店维修,然后人正常上班去了,每天下班我都打电话问4S店车修好了没,然后打了3天,4S店告诉我修好了,然后我就去取车去了。

这个好处就在于我同时间在干两件事,上班和等车子修好,车子在修不耽误我上班,这个就是非阻塞;但是我每天都会问4S店好了没(询问机制),3天后4S店告诉我好了,然后我放下手里的事去提车去了,这个就是同步,在提车的那个时间段我没办法再上班。

所以总结就是,先干一件事(把车交给4S店),然后干两件/多件事(上班和打电话问4S店),然后再干一件事(取车)

3:AIO(异步非阻塞IO模型)

这个用的很少

通俗解释:

                我把车交给4S店了,然后我就上班去了,我也没管他,3天后打电话给我说车修好了,但是这个时候我没空啊,我正在上班,于是就喊我老婆去取车了。

这里就格外的有意思,我发起修车请求,我老婆接收到修好的车(这就是异步请求),然后我这几天也不知道车修好没,我都在上班,都是4S店主动通知我的(这个就是非阻塞和异步结合起来的)因为NIO中非阻塞式并不是是4S店主动通知,而到了异步这边,非阻塞就必须得是4S店主动通知了,因为我(主线程)并不关心这件事,所以无法主动知道情况。

4:异步阻塞IO模型

这种模型说实话我个人觉得不存在,首先异步解决的就是阻塞这个问题,而阻塞也就只有同步才会产生,异步他怎么可能阻塞呢,就相当于我让我老婆把车弄去修(异步),他在那等(阻塞),但是这种情况我自己又没有被阻塞,所以这个我个人觉得是完全不成立的;尤其是主线程里面开子线程执行BIO,这种情况对我这个主线程来说都是异步非阻塞的,所以说在理解异步阻塞的时候一定得搞清楚主语,都是针对同一线程的,不能把主次搞乱了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值