程序员

同步、异步、阻塞、非阻塞,这下明白了

2018-07-26  本文已影响98人  闲睡猫

同步阻塞,同步非阻塞,异步阻塞,异步非阻塞...

晕!

头!

转!

向!

对于小白来说,理解这些概念太难了。搜索这些概念,得到的却是更多的概念,什么并发,并行,银行家算法,操作系统调度等等...

难道就没有说人话的解释吗?用更复杂地概念去解释不懂的概念,只会带来更大的认知困惑。

好在,网上有一个关于这些概念的比喻,简洁生动,一目了然。

老张爱喝茶,晚饭后必不可少要喝上一泡茶。

泡茶的第一步是要先煮开水,他用的是老式水壶,水开了,不会响,也不会自动关闭。为了防止水开了溢出,甚至是烧干锅,他就坐在一旁等着。(同步阻塞,老张只能等到水开,在此期间不能去做其他事)

后来,由于新剧上播,老张媳妇在追剧,要老张陪着一起看,宠妻狂魔(怕老婆)的老张不得不从,但心里一直惦记着开水,于是时不时回去厨房看水是否开了。(同步非阻塞,在烧水期间,可以做其他事,但水烧开了不会发出通知,因此需要轮询确认水的状态)

由于不能专心陪媳妇看电视,媳妇有了意见,老张换了一个新的水壶,水烧开后会发起响声并自动断开

由于是新买的水壶,对于其功能还不放心,第一次使用,老张为了安全起见,坐着一旁等着。(异步阻塞,在此期间,老张不能去做其他事,但水烧开后会主动发出通知)

试验成功!

接下来老张再也不用查看水是否烧开了,直接陪老婆看电视,直到听到水烧开的响声再去倒水。(异步非阻塞,烧水期间,老张可以去做其他事,水烧开了会发出通知)

烧水泡茶

总结:

此比喻来源网络,原作者不明,我在其基础上进行了修改

上一篇下一篇

猜你喜欢

热点阅读