也说同步异步阻塞非阻塞

原创 2016年05月31日 12:48:39

这里所说的概念都是指 API 和 网络 I/O 方面的,如果是其他科目同一词汇可能表达的是完全不同的概念,比如布式系统里的同步表示是各节点按照时钟节拍同步,而异步是收到消息后立即执行

同步就是调用方一直等着被调方完成
异步就是调用方不必等着被调方完成,完成后被调方通知调用方
阻塞就是调用方一直等着消息
非阻塞就是调用方不必一直等待消息,可以先去干别的

举个例子,就用在饭店点菜做例子
同步阻塞就是点完菜在前台一直等着上菜
同步非阻塞就是点完菜在前台处玩手机
异步阻塞就是点完菜回座位一直等着上菜
异步非阻塞就是点完菜回座位上玩手机

同步和异步关心的是调用方和被调方之间消息通信的机制
同步:发出的调用在没有得到结果之前不返回
异步:发出调用即刻返回,等待回调函数返回结果
异步编程:Node.js
阻塞非阻塞关心的是调用方在等待结果时的状态
阻塞是在调用返回结果之前一直等待
非阻塞是在调用返回结果之前不必等待,但是可以经常检查是否完成

是否阻塞和同步异步没有任何关系
你是等着上菜还是玩手机和你在前台等还是在座位等没有任何关系

在类 UNIX 中存在五种 I/O 模型

  • 阻塞式I/O
  • 非阻塞式I/O
  • I/O复用(select,poll,epoll…)
  • 信号驱动式I/O(SIGIO)
  • 异步I/O(POSIX的aio_系列函数)

想要详细了解请参阅《 UNIX 网络编程:卷一》
对 UNIX 来讲:阻塞式 I/O (默认),非阻塞式 I/O (nonblock),I/O 复用(select/poll/epoll)都属于同步 I/O,因为它们在数据由内核空间复制回进程缓冲区时都是阻塞的(不能干别的事)。只有异步 I/O 模型(AIO)是符合异步 I/O 操作的含义的,即在1数据准备完成、2由内核空间拷贝回缓冲区后 通知进程,在等待通知的这段时间里可以干别的事

image_1ajbgp3dn1c3q17u11of81t0g1grk9.png-142.2kB
陈硕认为在处理 IO 的时候,阻塞和非阻塞都是同步 I/O,而只有使用了特殊的 API 才是异步 IO

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

这篇文章分析了Linux下的5种IO模型 http://blog.csdn.net/hguisu/article/details/7453390 很多人对阻塞 / 非阻塞, 同步 / 异步 的概...
  • ITer_ZC
  • ITer_ZC
  • 2014年09月15日 13:45
  • 14247

【高并发编程】再谈同步、异步、阻塞、非阻塞

同步、异步、阻塞、非阻塞的概念一直是计算机学科中很重要的概念,而这种细微的差别常常被大家混淆,我自己在过一段时间后也需要复习。今天再次翻出这个概念,仍然觉得不够清晰,今天再次深入了解了这四大天王。 以...
  • xxxxxx91116
  • xxxxxx91116
  • 2016年04月24日 16:13
  • 5918

怎样理解阻塞非阻塞与同步异步的区别?

作者:严肃 链接:https://www.zhihu.com/question/19732473/answer/20851256 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 “...
  • z69183787
  • z69183787
  • 2016年10月24日 12:12
  • 948

简谈java中的阻塞非阻塞与同步异步

在学习java网络编程时,我遇到了同步/异步,阻塞/非阻塞着四种调用方式。在这里我就大概的说一下我对它们的理解。 同步/异步主要针对客户端:         同步:就是当客户端发出一个功能...
  • hjh_walker
  • hjh_walker
  • 2016年09月05日 12:26
  • 2056

【java】同步、异步、阻塞、非阻塞

理解同步与异步 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。  异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。    举个例子:普通...
  • lzm18064126848
  • lzm18064126848
  • 2015年09月20日 11:40
  • 3353

IO模型介绍以及同步异步阻塞非阻塞的区别

阻塞:用户进程访问数据时,如果未完成IO,等待IO操作完成或者进行系统调用来判断IO是否完成非阻塞:用户进程访问数据时,会马上返回一个状态值,无论是否完成同步:用户进程发起IO(就绪判断)后,轮询内核...
  • it_man
  • it_man
  • 2014年04月22日 17:17
  • 4636

并发,同步,异步,互斥,阻塞,非阻塞的理解

并发(concurrency):在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥。 所谓互斥,是指分布在...
  • IT_LOVER_
  • IT_LOVER_
  • 2016年08月08日 18:59
  • 1302

socket编程的同步、异步与阻塞、非阻塞示例详解之二

接上文: http://blog.chinaunix.net/uid-26000296-id-3755264.html 三、异步阻塞模式 另外一个阻塞解决方案是带有阻塞通知的非阻塞 I/O。...
  • imxiangzi
  • imxiangzi
  • 2016年01月08日 00:18
  • 1200

Netty之BIO(同步阻塞IO)、PIO(伪异步阻塞IO)、NIO(异步非阻塞IO)、AIO(异步非阻塞IO)、Netty

学习书籍:Netty权威指南 多种IO方式的比较: 1、BIO(同步阻塞IO) 使用ServerSocket绑定IP地址和监听端口,客户端发起连接,通过三次握手建立连接,用socket来进行通信,通过...
  • kevinxxw
  • kevinxxw
  • 2015年08月21日 17:27
  • 4505

怎样理解阻塞非阻塞与同步异步的区别

怎样理解阻塞非阻塞与同步异步的区别? 发现很多人对这两个概念往往混为一谈 6 条评论  分享 按投票排序按时间排序 47 ...
  • baicp3
  • baicp3
  • 2016年03月16日 09:30
  • 1534
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:也说同步异步阻塞非阻塞
举报原因:
原因补充:

(最多只允许输入30个字)