同步阻塞 同步非阻塞 异步阻塞 异步非阻塞
今天老师讲了同步阻塞 同步非阻塞 异步阻塞 异步非阻塞。讲完感觉老师自己说的都是前后矛盾的。去网上找了几篇大佬的博客,看完后才有点点感悟。特地小结记下来,若有错误之处,欢迎大家斧正。
首先先弄清楚同步和异步 ,阻塞和非阻塞。
1. 同步和异步(指的是消息)
同步和异步描述的是消息通信的机制
同步:
一次调用,一次返回;整个过程就是同步调用的过程;
特点:针对每次都是一次同步的调用;
异步:
调用后,没有得到想要的返回(或者不care返回值);而是通过后面的回调、状态通知的方式获得结果;
特点:通过回调callback、状态或者通知的方式告知调用方结果;
2. 阻塞和非阻塞 (指的是进程/任务)
描述的是程序在等待调用结果(消息、返回值)时的状态
阻塞:
调用方线程在等待结果返回过程中,线程被挂起,(调用方不能处理其它事情)等结果返回后,唤醒线程;
特点:调用方被阻塞
非阻塞:
调用方线程在等待结果的过程中,线程没有被挂起,(可以处理其它事情)
特点:调用方没有被阻塞
这里的关系就像水火和冷热一样,是两组不同的相对概念。但是第一反应水是冷的,火是热的。其实呢开水温度也有100度,鬼火(磷火)也只有40度。
老师以前叫promise和async时经常说同步要等它执行完,异步就可以不用管。导致和后面学的阻塞与非阻塞产生歧义。
同步异步只是指消息通知给调用方的方式(被动查看,主动返回),阻塞和非阻塞才是等待任务进程调用结果(消息、返回值)时的状态。
通俗的用最近去医院来举例
同步阻塞
去医院挂号,医院的提示铃声坏了,你怕错过什么事也不做(阻塞)一直紧紧盯着当前的就诊号消息(同步)。这叫同步阻塞,时间利用率低
同步非阻塞
也是去医院的提示铃声坏了,你看着人多便开始刷剧(非阻塞)但是也时不时看一下当前的就诊号消息(同步)。这叫同步非阻塞,时间利用率较高。
异步阻塞
医院的提示铃声修好了,到一定时间它自己会广播提示(异步)。但是你也什么也不做也不看当前就诊信息,就发呆(阻塞)。这叫异步阻塞,效率和同步阻塞没什么两样,时间利用率低。
异步非阻塞
医院的提示铃声修好了,到一定时间它自己会广播提示(异步)。但是你这个时间坐下来看小说,打游戏,刷b站(非阻塞)。没有不刻意查看当前就诊号。这叫异步非阻塞,时间利用率高。
同步是需要自己主动查询任务状态获取信息,异步是任务自己返回结果给调用方。调用方不必主动查询。阻塞就是等待。
版权声明:本文为参考CSDN博主「安心写bug」的原创文章后的总结,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36963372/article/details/83353017
同步阻塞 同步非阻塞 异步阻塞 异步非阻塞相关推荐
- 确定不来了解一下什么是 BIO NIO AIO 阻塞 非阻塞 同步 异步?
本文内容涉及同步与异步, 阻塞与非阻塞, BIO.NIO.AIO等概念, 这块内容本身比较复杂, 很难用三言两语说明白. 而书上的定义更不容易理解是什么意思. 下面跟着我一起解开它们神秘的面纱. BI ...
- recvfrom函数 非阻塞_那些年让你迷惑的阻塞、非阻塞、异步、同步
那些年让你迷惑的阻塞.非阻塞.异步.同步 在IT圈混饭吃,不管你用什么编程语言.从事前端还是后端,阻塞.非阻塞.异步.同步这些概念,都需要清晰地掌握,否则,怎么与面试官谈笑风生(chui niu pi ...
- Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)
文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...
- 深入理解非阻塞同步IO和非阻塞异步IO
这两篇文章分析了Linux下的5种IO模型 http://blog.csdn.net/historyasamirror/article/details/5778378 http://blog.csdn ...
- 同步I/O、异步I/O、阻塞I/0、非阻塞I/O、五种I/O模型、高性能网络模型
10.I/O相关概念 https://www.cnblogs.com/xiaoxi/p/6525396.html 10.1.同步和异步 同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须 ...
- 简单理解什么是同步阻塞/同步非阻塞,异步阻塞/异步非阻塞
简单理解什么是同步阻塞/同步非阻塞,异步阻塞/异步非阻塞 声明:本篇思想非原创,系从老师处听来.因为CSDN发转载需要有原文链接,本篇没有原文链接,所以填的原创. 举个栗子 1.你在家做饭,用普通的汤 ...
- 异步就是异步,根本就没有 异步非阻塞IO这个说法。阻塞 非阻塞,同步I/O 异步I/O 的区别
先给大家安利一下这个 https://www.ibm.com/developerworks/cn/linux/l-async/ 里面关于 异步非阻塞IO 是错的. 异步就是异步,别扯 异步阻塞 异步非 ...
- java如何阻塞和同步_同步与异步,阻塞与非阻塞
今天早上关注了这个问题,刚抽出时间大概整理下,以下仅是个人理解: 一定要多看几遍代码并结合文字理解下 引0.从I/O说起 这些概念之所以容易令人迷惑,在于很多人对I/O就没有清晰准确的理解,后面的理解 ...
- 阻塞/非阻塞/同步/异步方法和多线程的关系?没有任何关系,俩不挨着
1.阻塞非阻塞异步同步是针对方法说的,是评判一个方法运行状态的.和多线程完全两个级别. 2.阻塞非阻塞异步同步是针对方法说的,是评判一个方法运行状态的.和多线程完全两个级别. 3.阻塞非阻塞异步同步是 ...
最新文章
- 作业4:扒开系统调用的三层皮(上) 20135115臧文君
- Translucent System Bars-4.4新特性
- 混凝土静力受压弹性模量试验计算公式_【小马建考干货】天天送检,你知道混凝土试块检测哪些性能标指吗?...
- 【课程】MIT深度学习课程:架起理论与实践的桥梁
- linux删除命令_【小技巧】Linux命令的快捷键
- C# DataTable 和List之间相互转换的方法
- Python:isinstance()和type()
- python数组如果余弦_numpy :: 计算特征之间的余弦距离
- 模式识别和机器学习重点算法总结篇
- JavaWeb项目分层结构
- Vue导出excel表格设置样式的解决方案
- html滚动字幕源码,网页HTML代码:滚动文字的制作
- 带你Dart带你Diao之类
- Spring Boot+Spring Security:基于URL动态权限:自定义Filter - 第17篇
- 活动回顾 | 大咖云集“开源安全治理模型和工具”线上研讨会
- shopnc mysql_ShopNC单用户版/安装mysql
- 怎样将excel表格合并
- postgresql12的同步流复制搭建及主库hang问题处理和分析
- HTML5期末大作业:漫画网站设计——海贼王我当定了(6页) web前端期末大作业 html+css+javascript网页设计实例 企业网站制作 计算机毕设网页设计源码
- js控制台 console 骚操作-打印图片-自定义样式-字符画