原文

老张爱喝茶,废话不说,煮开水。

出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。

1 老张把水壶放到火上,立等水开。(同步阻塞

老张觉得自己有点傻

2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞

老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。

3 老张把响水壶放到火上,立等水开。(异步阻塞

老张觉得这样傻等意义不大

4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞

老张觉得自己聪明了。


所谓同步异步,只是对于水壶而言。

普通水壶,同步;响水壶,异步。

虽然都能干活,但响水壶可以在自己完工之后,提示老张水开了。这是普通水壶所不能及的。

同步只能让调用者去轮询自己(情况2中),造成老张效率的低下。

所谓阻塞非阻塞,仅仅对于老张而言。

立等的老张,阻塞;看电视的老张,非阻塞。

情况1和情况3中老张就是阻塞的,媳妇喊他都不知道。虽然3中响水壶是异步的,可对于立等的老张没有太大的意义。所以一般异步是配合非阻塞使用的,这样才能发挥异步的效用。

程序员写程序,很多情况下,老张和水壶都要涉及,即调用者与被调用者。四种组合模式各有所长。

这个例子和银行排队有异曲同工之妙,可是我觉得这个会比较容易理解一些。

老张一次比一次聪明,我承认跟老张很像。刚开始的情况逻辑比较简单,但效率低下。随着慢慢的提高,效率也提高了。所以个人认为,程序的效率和简单程度是成反比的。

但不是说异步非阻塞就一定是最好的,有的情况下更适合使用同步或者阻塞。

转载于:https://www.cnblogs.com/fightformylife/p/4119608.html

老张喝茶 教你同步异步 阻塞与非阻塞(转)相关推荐

  1. 理解同步异步、阻塞与非阻塞

    "阻塞"与"非阻塞"与"同步"与"异步"不能简单的从字面理解,提供一个从分布式系统角度的回答. 1.同步与异步 同步和异 ...

  2. 同步、异步;阻塞、非阻塞

    老张爱喝茶,废话不说,煮开水. 出场人物:老张,水壶两把(普通水壶,简称水壶:会响的水壶,简称响水壶). 1 老张把水壶放到火上,立等水开.(同步阻塞) 老张觉得自己有点傻 2 老张把水壶放到火上,去 ...

  3. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...

    python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程并行与并发同步与异步阻塞与非阻塞CPU密集型与IO密集型 线程与进程 进程 前言 ...

  4. 那些年搞不懂的多线程、同步异步及阻塞和非阻塞(二)---概念区分

    概念解释: 同步/异步, 它们是消息的通知机制 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 简单来说就是当前程序执行完才能执行后面的程序,程序执行时按照顺序执行, ...

  5. 【高并发编程】再谈同步、异步、阻塞、非阻塞

    同步.异步.阻塞.非阻塞的概念一直是计算机学科中很重要的概念,而这种细微的差别常常被大家混淆,我自己在过一段时间后也需要复习.今天再次翻出这个概念,仍然觉得不够清晰,今天再次深入了解了这四大天王. 以 ...

  6. 也谈阻塞、非阻塞、同步、异步

    最近在招聘中,发现不少人对BIO.NIO.AIO等理解非常模糊,觉得有必要写文章来纠正下很多人的误解. 在谈这些之前,非常有必要先介绍下Unix 5种IO模型: 阻塞: 阻塞是最常用的IO模型,默认情 ...

  7. 同步、异步与阻塞、非阻塞经典段子(来自网络)

    老张爱喝茶,废话不说,煮开水. 出场人物:老张,水壶两把(普通水壶,简称水壶:会响的水壶,简称响水壶). 1 老张把水壶放到火上,立等水开.(同步阻塞) 老张觉得自己有点傻 2 老张把水壶放到火上,去 ...

  8. 阻塞和非阻塞、同步和异步 、五种IO模型

    阻塞和非阻塞,同步和异步 1 例子 故事:老王烧开水. 出场人物:老张,水壶两把(普通水壶,简称水壶:会响的水壶,简称响水壶). 老王想了想,有好几种等待方式 1.老王用水壶煮水,并且站在那里,不管水 ...

  9. 阻塞与非阻塞 异步 与同步

    2019独角兽企业重金招聘Python工程师标准>>> 阻塞和非阻塞,同步和异步 1 例子 故事:老王烧开水. 出场人物:老张,水壶两把(普通水壶,简称水壶:会响的水壶,简称响水壶) ...

最新文章

  1. 电子科大博士生杨超火了!2年实现Science+Nature一作双杀
  2. python mql4_可以转发文章不?老外用随机森林预测外汇分钟涨跌准确率高达85%。求高手用python重写。...
  3. 2017年第八届蓝桥杯 —— 训练题目 —— 空瓶换汽水
  4. Mongodb 基础 查询表达式
  5. 10 个实用的 GitHub 插件
  6. Spring MVC + Hibernate + Maven:CRUD操作示例
  7. 最大连续子序列----DP动态规划
  8. 使用memocache
  9. 2014-01-01
  10. Envoy 源码分析--network L4 filter manager
  11. 【Java】JavaSE JDK 及离线帮助文档下载链接
  12. 5S现场管理之车间现场标准化管理的六大执行要点
  13. 【程序员如何买基金 九】基金定投的优势
  14. linux控制wifi发射功率,路由器的发射功率上限是多少
  15. 灵飞经3 印神无双 第十四章 印神古墓 3
  16. c语言累加和校验_循环冗余校验(CRC)算法入门
  17. # 吴恩达 · 机器学习笔记(① Introduction to Machine Learning)
  18. 西北大学第四届程序设计竞赛新生赛 J 八意永琳的药房
  19. 我是这样入门“机器学习”的
  20. Linux修改文件时间或创建新文件:touch

热门文章

  1. 腾讯开放或将触发行业新一轮创业热潮
  2. C#使用ExecuteReader返回DataReader既有查询结果集又有输出参数或返回值的使用注意事项...
  3. 为什么我们都要等到失去后才知道珍惜呢(转载)
  4. Kamailio v4.4.6 发布,开源 SIP 服务器
  5. 数据结构 ---- 链表
  6. Oracle 12C -- 扩展varchar2、nvarchar2、和raw数据类型的大小限制
  7. zsh与oh-my-zsh
  8. LINUX samba的安装使用
  9. DB2 创建数据库、缓冲池和表空间
  10. 手工卸载.Net写的win服务