美文网首页程序员
同步、异步、阻塞、非阻塞

同步、异步、阻塞、非阻塞

作者: Sorkin | 来源:发表于2017-10-28 12:20 被阅读0次

    编程是为了让计算机完成任务,并得到我们所要的结果。
    其中四个相关的非常重要的概念:同步、异步、阻塞、非阻塞。
    为了更好的理解这四个概念,用老张喝茶烧水来说明:

    老张爱喝茶,要烧开水。
    出场人物:老张,水壶两把(普通水壶,简称水壶;水烧开会响的水壶,简称响水壶)。
    1.老张把水壶放到火上,在旁边等水开。(同步阻塞)
    老张觉得自己有点傻
    2.老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
    老张还是觉得自己有点傻
    于是想办法,买了把水烧开会响笛的那种水壶。水开之后,能大声发出嘟嘟嘟~~~的噪音。
    3.老张把响水壶放到火上,在旁边等水开。(异步阻塞)
    老张觉得这样傻等意义不大
    4.老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
    老张觉得自己聪明了

    当然,选择什么方式更合理,还是要看更多的条件:

    • 如果CPU慢,任务时间长,(火小,水开要的时间长),那么采用异步非阻塞的老张才是聪明的;
    • 如果CPU慢,任务时间短,(假设只烧开一滴水),那么采用同步阻塞的老张才是聪明的;
    • 如果CPU变快了,原来任务时间长的事情,现在任务时间很短,(假设火力变强,现在烧一壶水的时间跟原来烧一滴水的时间一样了),那么也应该采用同步阻塞
    • 如果CPU变快了,但是任务也加大了,任务时间比原来更长了,(假设火力变强,现在要烧开大海的水),那么只能用异步非阻塞。(否则等到死都还没有结果)

    虽然现在我们的CPU变快了,但是我们的任务变得更难,因为我们正处在全球化、数字化的新时代。
    如果CPU是数量级增长,那么任务就是几何级增长。

    相关文章

      网友评论

        本文标题:同步、异步、阻塞、非阻塞

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