美文网首页程序员
同步、异步、阻塞、非阻塞,这下明白了

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

作者: 闲睡猫 | 来源:发表于2018-07-26 16:40 被阅读98次

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

    晕!

    头!

    转!

    向!

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

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

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

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

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

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

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

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

    试验成功!

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

    烧水泡茶

    总结:

    • 同步:事情完成后不能发出通知,只能由调用者轮询查看
    • 异步:事情完成后,主动向调用者发出通知
    • 阻塞:在等待一件事完成期间,不能去做其他事
    • 非阻塞:在等待一件事完成期间,可以去做其他事

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

    相关文章

      网友评论

      本文标题:同步、异步、阻塞、非阻塞,这下明白了

      本文链接:https://www.haomeiwen.com/subject/itwbmftx.html