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

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

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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容