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. My1stServlet
  2. Qwt(一): 编译 · 安装
  3. 第8章例题 6-4 输入年份和天数,输出对应的年、月、日
  4. Pow(x, n)Python解法
  5. JavaScript复制数组
  6. 韩顺平php视频笔记36 php基本语法
  7. 苹果iPhone XI奋起直追?直接升级四摄镜头
  8. OpenShift 4 - 使用Operator安装Gitea
  9. ajaxsetup获取ajax的url_跨域调用接口的方法之一:$.ajaxSetup()
  10. pyecharts显示所有x轴_30分钟学会pyecharts数据可视化
  11. python中ascii的应用_Python程序中的ascii()
  12. 如何保持连接_酒店厨房设备如何保养清洗?
  13. 模块 datetime
  14. ffmpeg 中 swscale 的用法
  15. 计算机网络ppt背景,教大家使用ppt设计出高逼格的背景图
  16. yml文件中${}的使用
  17. 人工智能安全(二)—攻击
  18. Oracle表分区详解(优缺点)
  19. 职场心理 自述-共勉
  20. java中正则表达式隐藏中文汉字

热门文章

  1. 23 种设计模式的通俗解释,秒懂
  2. Python3 站长工具-百度拓词抓取关键词
  3. QR分解之HouseHolder变换
  4. 西安建筑科技大学的计算机专业怎么样,西安建筑科技大学-XAUAT
  5. 连续票据号段,每次选择号段之后,根据已选号段和剩余号段,自动选择号段问题解决思路。
  6. 朋友圈或者qq动态相关的数据库设计
  7. poi的导出Excel,word,PDF格式
  8. 解决HTML5+sdk开发的webapp兼容各种刘海屏的问题
  9. linux java 弹出界面,java gui界面在linux
  10. Deep walk模型 详细解释