1.同步与异步
同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)
所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。
换句话说,就是由调用者主动等待这个调用的结果。
而异步则是相反,调用在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用。
典型的异步编程模型比如Node.js
举个通俗的例子:
你打电话问书店老板有没有《分布式系统》这本书,如果是同步通信机制,书店老板会说,你稍等,”我查一下",然后开始查啊查,等查好了(可能是5秒,也可能是一天)告诉你结果(返回结果)。
而异步通信机制,书店老板直接告诉你我查一下啊,查好了打电话给你,然后直接挂电话了(不返回结果)。然后查好了,他会主动打电话给你。在这里老板通过“回电”这种方式来回调。

  1. 阻塞与非阻塞
    阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.
    阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
    非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。

    还是上面的例子,
    你打电话问书店老板有没有《分布式系统》这本书,你如果是阻塞式调用,你会一直把自己“挂起”,直到得到这本书有没有的结果,如果是非阻塞式调用,你不管老板有没有告诉你,你自己先一边去玩了, 当然你也要偶尔过几分钟check一下老板有没有返回结果。
    在这里阻塞与非阻塞与是否同步异步无关。跟老板通过什么方式回答你结果无关。

阻塞和非阻塞,应该描述的是一种状态,同步与非同步描述的是行为方式

同步 异步 阻塞 非阻塞的区别相关推荐

  1. 同步异步与阻塞非阻塞的区别 (不定时更新)

    同步异步与阻塞非阻塞的概念对于很多初学者来说是一个模糊的概念,其实我们的生活中存在着很多同步和异步的例子. 同步和异步关注的是消息通信机制 在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请 ...

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

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

  3. 正确理解同步/异步和阻塞/非阻塞的区别:

    之前一直把异步和非阻塞混为一谈,在 了解BIO和NIO的区别时才发现了两者的差异,看了网上很多文章觉得说的总是差点意思,下面是个人理解: 1.同步 非同步 阻塞 非阻塞 概念 怎样理解阻塞非阻塞与同步 ...

  4. 同步/异步 阻塞/非阻塞区别

    我喜欢用自己的语言通过联系现实生活中的一些现象解释一些概念,当我能做到这一点时,说明我已经理解了这个概念.今天要解释的概念是:同步/异步与阻塞/非阻塞的区别. 这两组概念常常让人迷惑,因为它们都是涉及 ...

  5. Socket 同步/异步 与阻塞/非阻塞区别

    2019独角兽企业重金招聘Python工程师标准>>> 在网上看了很多答案,也没找到合适的,也许本文也不是合适答案:) 同步和异步关注的是消息通信机制,而阻塞非阻塞关注的是程序在等待 ...

  6. 同步/异步与阻塞/非阻塞的区别

    这两组概念常常让人迷惑,因为它们都是涉及到IO处理,同时又有着一些相类似的地方. 首先来解释同步和 异步的概念,这两个概念与消息的通知机制有关. 举个 例子,比如我去银行办理业务,可能选择排队等候,也 ...

  7. C++ 同步/异步与阻塞/非阻塞的区别

    C++之 -------何为同步,异步何解,阻塞了呢?非阻塞呢? 走访各种大小论坛, 纠集纵多风云看法, 贴于此处表我观点, 界内人士若点迷津, 小弟定会铭记终生, 愿高手们不吝赐教, 长江后浪带着前 ...

  8. Linux驱动学习9(同步/异步与阻塞/非阻塞的区别 )

    很多人对阻塞,非阻塞,同步,异步,并发,竞态的概念不是很清晰,今天我把我理解的用一个模型来说明一下这些概念. 首先建立一个模型: 我们去银行办理业务,屌丝的做法是: 1.银行未准备好,则一直排队,直到 ...

  9. 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行,太实用了!

    作者:Martin cnblogs.com/mhq-martin/p/9035640.html 基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运 ...

  10. 阻塞/非阻塞与同步/异步的区别

    阻塞,非阻塞 同步,异步 阻塞与非阻塞最大的区别是调用方一直等待还是先去处理别的事情. 同步与异步最大的区别就是被调用方返回结果之前的这段时间内,调用方是否一直等待. 那么阻塞和同步,非阻塞和异步是一 ...

最新文章

  1. iBatis简单入门教程
  2. 【阿里云课程】如何从零开始完成一个完整的CV项目
  3. PostgreSQL windows下安装出现问题的解决办法
  4. Kotlin实战指南二十:flow
  5. InnoDB支持的最大事务数量
  6. menu什么意思中文意思_英文alone、lonely、lonesome 中文意思跟用法差别
  7. Ubuntu下文件权限管理
  8. Flink应用实战案例50篇(一)- Flink SQL 在京东的优化实战
  9. 前端学习(1427):ajax封装二
  10. zabbix基础之环境搭建
  11. iOS开发之UIAlertController的适配
  12. 计算机在职硕士 学什么,计算机在职研究生考什么科目为什么此专业比较强调数学呢...
  13. 基础拍摄前期和基础后期修图
  14. Android的MVP架构
  15. Pytorch环境配置与安装(Anaconda、Pycharm、Jupyter)
  16. linux发行版本排行,2020年10种最受欢迎的Linux发行版排名
  17. DDR3 CONTROLLER-PHY物理层
  18. o7_dictionary_accessibility 参数
  19. 辛巴学院-Unity-剑英陪你零基础学c#系列(一)Hello World
  20. javaweb之二维码

热门文章

  1. 网站架构基础学习(详细)
  2. kafka带kerberos和sasl安全认证:命令行消费指定topic数据
  3. gentoo 屏幕截图工具 scrot
  4. 如何在众多百世快递物流中快速筛选出更新量为1的单号
  5. 「CSS」Margin Collapsing - 外边距合并
  6. blockchain-explorer区块链浏览器中文版部署
  7. 屏蔽Windows按键(除却ALT+CTRL+DELETE)
  8. 学佛者必看的200句(看完可退嗔恨心)
  9. 关于asp.net ajax最新版本的书国内在2007.4即将到来两本书
  10. 【Qt Quick】设置程序图标