文档章节

同步与异步,阻塞与非阻塞

laichendong
 laichendong
发布于 2014/09/18 15:40
字数 605
阅读 82
收藏 2
同步与异步,阻塞与非阻塞这几个改念往往,混淆不清,混为一谈。我来尝试一下自己的解释。希望自己也能更加明晰一些。

同步 VS 异步

我认为 同步和异步指的是处理事情的方式。同步就是一件接一件的做。同时只能做一件事儿。反之,异步就是可以同时做两件以上的事儿。 生活中的例子:中学学过一篇《统筹方法》的课文,说的时泡茶。如果是同步的方式就是:先烧水,水烧开了再洗茶杯,洗完茶杯再放茶叶,放完茶叶再冲水——茶泡好了。异步的方式就是:先开始烧水。然后不管水了。开始洗茶杯,放茶叶,(这个过程和烧水是同时进行的,异步)。水烧开了。再冲水。 对应与程序中,同步往往对应着单线程。而异步往往对应着多线程。

阻塞与非阻塞

和同步异步不同,同步异步是指的做多件事情的策略。而阻塞和非阻塞指的是别人让你做一件(耗时较长的)事情时,你如何给他响应的策略。阻塞是指在你做完之前都不给他响应(阻塞住他干别的事儿)。相应的非阻塞呢,就是你立刻给他响应,告诉他还没干完呢,大概还要多久之类的(或已经干完了,结果是什么)。 所以。 同步和异步,是针对调用者来说的概念。而阻塞和非阻塞是针对被调用者来说的概念。”阻塞调用“其实说的是这个调用会被被调用者阻塞住。 所以,同步不等于阻塞,异步也不等于非阻塞。对于单线程的调用者来说。不管时阻塞的还非阻塞的调用。都是同步的。所以Unix的非阻塞 I/O模型属于同步I/O。而异步的,肯定是非阻塞的。因为异步意味着同时进行,都同时进行了。肯定就是没有阻塞住调用者了。  

© 著作权归作者所有

laichendong
粉丝 10
博文 85
码字总数 71483
作品 0
朝阳
程序员
私信 提问
加载中

评论(1)

HenrySun
HenrySun
个人感觉这四个概念应该分JAVA编程模型和操作系统的IO模型两个模块来分析
Socket 同步/异步 与阻塞/非阻塞区别

在网上看了很多答案,也没找到合适的,也许本文也不是合适答案:) 同步和异步关注的是消息通信机制,而阻塞非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态. 同步/异步是API 被调用...

山里来的鱼
2015/07/29
0
0
同步与异步&阻塞与非阻塞

同步与异步&阻塞与非阻塞 五大I/O模型详解 java I/O模型简述 一直为同步异步,阻塞非阻塞概念所困扰,特定总结了下 一、同步与异步的区别 1、概念介绍 同步:所谓同步是一个服务的完成需要依...

haoran_10
2016/07/06
4.2K
33
如何理解阻塞和非阻塞同步和异步

同步与异步 同步和异步关注的是消息通信机制,所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由调用者主动等待这...

清风与你
2017/04/10
0
0
Java中BIO,NIO,AIO的理解

在高性能的I/O体系设计中,有几个概念常常会使我们感到迷惑不解。具体如下: 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步非阻塞? 7 ...

圣洁之子
03/13
0
0
同步,异步,阻塞和非阻塞的理解

概念 同步是两个对象之间的关系,而阻塞是一个对象的状态。 同步,异步 访问数据的方式,同步需要主动读写数据,在读写数据的过程中还是会阻塞;异步只需要I/O操作完成的通知,并不主动读写数...

好铁
2016/08/28
47
0

没有更多内容

加载失败,请刷新页面

加载更多

Docker搭建Mysql集群、主从同步复制

1、创建数据挂载点: mkdir /opt/mysql-master/mysql、/opt/mysql-master/conf.d、/opt/mysql-slave/conf.d、/opt/mysql-slave/conf.d 2、分别在master、slave节点文件目录conf.d下创建touch......

WALK_MAN
28分钟前
3
0
手把手教你做中间件开发(分布式缓存篇)-借助redis已有的网络相关.c和.h文件,半小时快速实现一个epoll异步网络框架,程序demo

本文档配合主要对如下demo进行配合说明: 借助redis已有的网络相关.c和.h文件,半小时快速实现一个epoll异步网络框架,程序demo 0. 手把手教你做中间件、高性能服务器、分布式存储技术交流群 ...

y123456yz
29分钟前
1
0
阿里技术男的成长史:越想证明自己死得越快……

在上海工作8年后,身为部门经理的钱磊,管理着一家ERP公司的百十来号员工,“再往上爬就是老板和他儿子了……从这个领域的技术角度来讲算是做到了顶。”05年,钱磊就开始关注一家名字奇怪,做...

阿里云云栖社区
33分钟前
3
0
Spring-boot单元测试(私有方法测试)

Spring-boot的单元测试网上有了很多,当项目是可以使用spring-boot正常运行时,只要在测试类上添加如下配置就使用@Autowired的方式进行单元测试 @RunWith(SpringJUnit4ClassRunner.class)@...

琴兽
50分钟前
1
0
spring cloud(第一部)框架概述

关于微服务 近几年,'微服务'这个词越来越多的被身边的人所提及,到底什么是微服务,为什么微服务总是伴随着spring cloud被人们所提及,这里笔者结合多年的技术经历跟大家分享下自己的理解:...

白中墨
50分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部