今天老师讲了同步阻塞 同步非阻塞 异步阻塞 异步非阻塞。讲完感觉老师自己说的都是前后矛盾的。去网上找了几篇大佬的博客,看完后才有点点感悟。特地小结记下来,若有错误之处,欢迎大家斧正。

首先先弄清楚同步和异步 ,阻塞和非阻塞。

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

同步阻塞 同步非阻塞 异步阻塞 异步非阻塞相关推荐

  1. 确定不来了解一下什么是 BIO NIO AIO 阻塞 非阻塞 同步 异步?

    本文内容涉及同步与异步, 阻塞与非阻塞, BIO.NIO.AIO等概念, 这块内容本身比较复杂, 很难用三言两语说明白. 而书上的定义更不容易理解是什么意思. 下面跟着我一起解开它们神秘的面纱. BI ...

  2. recvfrom函数 非阻塞_那些年让你迷惑的阻塞、非阻塞、异步、同步

    那些年让你迷惑的阻塞.非阻塞.异步.同步 在IT圈混饭吃,不管你用什么编程语言.从事前端还是后端,阻塞.非阻塞.异步.同步这些概念,都需要清晰地掌握,否则,怎么与面试官谈笑风生(chui niu pi ...

  3. Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)

    文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...

  4. 深入理解非阻塞同步IO和非阻塞异步IO

    这两篇文章分析了Linux下的5种IO模型 http://blog.csdn.net/historyasamirror/article/details/5778378 http://blog.csdn ...

  5. 同步I/O、异步I/O、阻塞I/0、非阻塞I/O、五种I/O模型、高性能网络模型

    10.I/O相关概念 https://www.cnblogs.com/xiaoxi/p/6525396.html 10.1.同步和异步 ​ 同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须 ...

  6. 简单理解什么是同步阻塞/同步非阻塞,异步阻塞/异步非阻塞

    简单理解什么是同步阻塞/同步非阻塞,异步阻塞/异步非阻塞 声明:本篇思想非原创,系从老师处听来.因为CSDN发转载需要有原文链接,本篇没有原文链接,所以填的原创. 举个栗子 1.你在家做饭,用普通的汤 ...

  7. 异步就是异步,根本就没有 异步非阻塞IO这个说法。阻塞 非阻塞,同步I/O 异步I/O 的区别

    先给大家安利一下这个 https://www.ibm.com/developerworks/cn/linux/l-async/ 里面关于 异步非阻塞IO 是错的. 异步就是异步,别扯 异步阻塞 异步非 ...

  8. java如何阻塞和同步_同步与异步,阻塞与非阻塞

    今天早上关注了这个问题,刚抽出时间大概整理下,以下仅是个人理解: 一定要多看几遍代码并结合文字理解下 引0.从I/O说起 这些概念之所以容易令人迷惑,在于很多人对I/O就没有清晰准确的理解,后面的理解 ...

  9. 阻塞/非阻塞/同步/异步方法和多线程的关系?没有任何关系,俩不挨着

    1.阻塞非阻塞异步同步是针对方法说的,是评判一个方法运行状态的.和多线程完全两个级别. 2.阻塞非阻塞异步同步是针对方法说的,是评判一个方法运行状态的.和多线程完全两个级别. 3.阻塞非阻塞异步同步是 ...

最新文章

  1. 作业4:扒开系统调用的三层皮(上) 20135115臧文君
  2. Translucent System Bars-4.4新特性
  3. 混凝土静力受压弹性模量试验计算公式_【小马建考干货】天天送检,你知道混凝土试块检测哪些性能标指吗?...
  4. 【课程】MIT深度学习课程:架起理论与实践的桥梁
  5. linux删除命令_【小技巧】Linux命令的快捷键
  6. C# DataTable 和List之间相互转换的方法
  7. Python:isinstance()和type()
  8. python数组如果余弦_numpy :: 计算特征之间的余弦距离
  9. 模式识别和机器学习重点算法总结篇
  10. JavaWeb项目分层结构
  11. Vue导出excel表格设置样式的解决方案
  12. html滚动字幕源码,网页HTML代码:滚动文字的制作
  13. 带你Dart带你Diao之类
  14. Spring Boot+Spring Security:基于URL动态权限:自定义Filter - 第17篇
  15. 活动回顾 | 大咖云集“开源安全治理模型和工具”线上研讨会
  16. shopnc mysql_ShopNC单用户版/安装mysql
  17. 怎样将excel表格合并
  18. postgresql12的同步流复制搭建及主库hang问题处理和分析
  19. HTML5期末大作业:漫画网站设计——海贼王我当定了(6页) web前端期末大作业 html+css+javascript网页设计实例 企业网站制作 计算机毕设网页设计源码
  20. js控制台 console 骚操作-打印图片-自定义样式-字符画

热门文章

  1. 【删】【Kubernetes视频学习笔记】Kubernetes集群YAML文件详解
  2. 对抗生成网络GAN系列——GAN原理及手写数字生成小案例
  3. 一款好用的Markdown文档编辑器:Typora
  4. linux如何检查进程是否存在,判断LINUX进程是否存在
  5. CSS3媒体查询适配不同型号的手机 IphoneX/IphoneXR等
  6. iOS自定义相机:带拍摄区域边框、半透明遮罩层、点击屏幕对焦、自动裁剪(含demo源码)
  7. 分享几个Qt界面绘图时使用到的坐标计算算法
  8. Java 利用POI操作PPT
  9. 适合下雪天发朋友圈的文案句子
  10. Unity手游性能蓝皮书