老张喝茶 教你同步异步 阻塞与非阻塞(转)
原文
老张爱喝茶,废话不说,煮开水。
出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。
1 老张把水壶放到火上,立等水开。(同步阻塞)
老张觉得自己有点傻
2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。
3 老张把响水壶放到火上,立等水开。(异步阻塞)
老张觉得这样傻等意义不大
4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
老张觉得自己聪明了。
所谓同步异步,只是对于水壶而言。
普通水壶,同步;响水壶,异步。
虽然都能干活,但响水壶可以在自己完工之后,提示老张水开了。这是普通水壶所不能及的。
同步只能让调用者去轮询自己(情况2中),造成老张效率的低下。
所谓阻塞非阻塞,仅仅对于老张而言。
立等的老张,阻塞;看电视的老张,非阻塞。
情况1和情况3中老张就是阻塞的,媳妇喊他都不知道。虽然3中响水壶是异步的,可对于立等的老张没有太大的意义。所以一般异步是配合非阻塞使用的,这样才能发挥异步的效用。
程序员写程序,很多情况下,老张和水壶都要涉及,即调用者与被调用者。四种组合模式各有所长。
这个例子和银行排队有异曲同工之妙,可是我觉得这个会比较容易理解一些。
老张一次比一次聪明,我承认跟老张很像。刚开始的情况逻辑比较简单,但效率低下。随着慢慢的提高,效率也提高了。所以个人认为,程序的效率和简单程度是成反比的。
但不是说异步非阻塞就一定是最好的,有的情况下更适合使用同步或者阻塞。
转载于:https://www.cnblogs.com/fightformylife/p/4119608.html
老张喝茶 教你同步异步 阻塞与非阻塞(转)相关推荐
- 理解同步异步、阻塞与非阻塞
"阻塞"与"非阻塞"与"同步"与"异步"不能简单的从字面理解,提供一个从分布式系统角度的回答. 1.同步与异步 同步和异 ...
- 同步、异步;阻塞、非阻塞
老张爱喝茶,废话不说,煮开水. 出场人物:老张,水壶两把(普通水壶,简称水壶:会响的水壶,简称响水壶). 1 老张把水壶放到火上,立等水开.(同步阻塞) 老张觉得自己有点傻 2 老张把水壶放到火上,去 ...
- python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...
python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程并行与并发同步与异步阻塞与非阻塞CPU密集型与IO密集型 线程与进程 进程 前言 ...
- 那些年搞不懂的多线程、同步异步及阻塞和非阻塞(二)---概念区分
概念解释: 同步/异步, 它们是消息的通知机制 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 简单来说就是当前程序执行完才能执行后面的程序,程序执行时按照顺序执行, ...
- 【高并发编程】再谈同步、异步、阻塞、非阻塞
同步.异步.阻塞.非阻塞的概念一直是计算机学科中很重要的概念,而这种细微的差别常常被大家混淆,我自己在过一段时间后也需要复习.今天再次翻出这个概念,仍然觉得不够清晰,今天再次深入了解了这四大天王. 以 ...
- 也谈阻塞、非阻塞、同步、异步
最近在招聘中,发现不少人对BIO.NIO.AIO等理解非常模糊,觉得有必要写文章来纠正下很多人的误解. 在谈这些之前,非常有必要先介绍下Unix 5种IO模型: 阻塞: 阻塞是最常用的IO模型,默认情 ...
- 同步、异步与阻塞、非阻塞经典段子(来自网络)
老张爱喝茶,废话不说,煮开水. 出场人物:老张,水壶两把(普通水壶,简称水壶:会响的水壶,简称响水壶). 1 老张把水壶放到火上,立等水开.(同步阻塞) 老张觉得自己有点傻 2 老张把水壶放到火上,去 ...
- 阻塞和非阻塞、同步和异步 、五种IO模型
阻塞和非阻塞,同步和异步 1 例子 故事:老王烧开水. 出场人物:老张,水壶两把(普通水壶,简称水壶:会响的水壶,简称响水壶). 老王想了想,有好几种等待方式 1.老王用水壶煮水,并且站在那里,不管水 ...
- 阻塞与非阻塞 异步 与同步
2019独角兽企业重金招聘Python工程师标准>>> 阻塞和非阻塞,同步和异步 1 例子 故事:老王烧开水. 出场人物:老张,水壶两把(普通水壶,简称水壶:会响的水壶,简称响水壶) ...
最新文章
- 电子科大博士生杨超火了!2年实现Science+Nature一作双杀
- python mql4_可以转发文章不?老外用随机森林预测外汇分钟涨跌准确率高达85%。求高手用python重写。...
- 2017年第八届蓝桥杯 —— 训练题目 —— 空瓶换汽水
- Mongodb 基础 查询表达式
- 10 个实用的 GitHub 插件
- Spring MVC + Hibernate + Maven:CRUD操作示例
- 最大连续子序列----DP动态规划
- 使用memocache
- 2014-01-01
- Envoy 源码分析--network L4 filter manager
- 【Java】JavaSE JDK 及离线帮助文档下载链接
- 5S现场管理之车间现场标准化管理的六大执行要点
- 【程序员如何买基金 九】基金定投的优势
- linux控制wifi发射功率,路由器的发射功率上限是多少
- 灵飞经3 印神无双 第十四章 印神古墓 3
- c语言累加和校验_循环冗余校验(CRC)算法入门
- # 吴恩达 · 机器学习笔记(① Introduction to Machine Learning)
- 西北大学第四届程序设计竞赛新生赛 J 八意永琳的药房
- 我是这样入门“机器学习”的
- Linux修改文件时间或创建新文件:touch
热门文章
- 腾讯开放或将触发行业新一轮创业热潮
- C#使用ExecuteReader返回DataReader既有查询结果集又有输出参数或返回值的使用注意事项...
- 为什么我们都要等到失去后才知道珍惜呢(转载)
- Kamailio v4.4.6 发布,开源 SIP 服务器
- 数据结构 ---- 链表
- Oracle 12C -- 扩展varchar2、nvarchar2、和raw数据类型的大小限制
- zsh与oh-my-zsh
- LINUX samba的安装使用
- DB2 创建数据库、缓冲池和表空间
- 手工卸载.Net写的win服务