同步&异步+阻塞&非阻塞(理解)
0 - 同步&异步
同步和异步关注的是消息通信机制。
0.1 - 同步
由“调用者”主动等待这个“调用”结果。即是,发出一个“调用”时,在没有得到结果之前,该“调用”不返回,一旦调用返回,则得到返回值。
0.2 - 异步
“调用者”不主动等待“调用”结果,而是“调用”结束之后主动通知“调用者”(通过状态、通知或者回调函数等各种形式)。
0.3 - 同步&异步-举例
例如,我打电话去询问教务处老师有没有开设”高性能计算导论“这门课。如果是同步机制,则老师会说,”稍等一下,我查一下“,然后我就在接通电话的状态下一直等着老师的回复;而如果是异步机制,则我就会挂断电话,等老师查询之后直接通过”回电“的方式通知我。
1 - 阻塞&非阻塞
阻塞和非阻塞关注的是程序在等待调用结果时的状态。
1.1 - 阻塞
阻塞是指程序在等待结果时该线程会挂起,即是说做不了其它事。
1.2 - 非阻塞
非阻塞是指程序在等待结果时不阻塞当前线程,可以做其它的事。
1.3 - 阻塞&非阻塞-举例
还是上面的例子,我还是打电话询问教务处老师有没有开设”高性能计算导论“这门课。如果是同步阻塞机制,则老师说,”稍等一下,我查一下“之后,我会一直守在通话旁等待老师回复而不做任何其它事情;如果是同步非阻塞机制,在老师说完之后我会同步做其它的一些小事情,比如用电脑刷刷微博等等,但还是会时不时注意手机保持的通话中老师是否在回复我。异步阻塞和异步非阻塞与相应的同步阻塞和非阻塞对应,但是我会挂断电话,以老师“回电”方式告知我。
2 - 参考资料
https://www.zhihu.com/question/19732473
同步&异步+阻塞&非阻塞(理解)的更多相关文章
- JAVA 中BIO,NIO,AIO的理解以及 同步 异步 阻塞 非阻塞
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解.具体如下: 序号 问题 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步 ...
- 深入理解非阻塞同步IO和非阻塞异步IO
这两篇文章分析了Linux下的5种IO模型 http://blog.csdn.net/historyasamirror/article/details/5778378 http://blog.csdn ...
- 理解同步,异步,阻塞,非阻塞,多路复用,事件驱动IO
以下是IO的一个基本过程 先理解一下用户空间和内核空间,系统为了保护内核数据,会将寻址空间分为用户空间和内核空间,32位机器为例,高1G字节作为内核空间,低3G字节作为用户空间.当用户程序读取数据的时 ...
- 谈谈对不同I/O模型的理解 (阻塞/非阻塞IO,同步/异步IO)
一.关于I/O模型的问题 最近通过对ucore操作系统的学习,让我打开了操作系统内核这一黑盒子,与之前所学知识结合起来,解答了长久以来困扰我的关于I/O的一些问题. 1. 为什么redis能以单工作线 ...
- I/O阻塞非阻塞,同步异步
http://www.cnblogs.com/luotianshuai/p/5098408.html "阻塞"与"非阻塞"与"同步"与&qu ...
- 【转载】高性能IO设计 & Java NIO & 同步/异步 阻塞/非阻塞 Reactor/Proactor
开始准备看Java NIO的,这篇文章:http://xly1981.iteye.com/blog/1735862 里面提到了这篇文章 http://xmuzyq.iteye.com/blog/783 ...
- 高性能IO设计模式之阻塞/非阻塞,同步/异步解析
提到高性能,我想大家都喜欢这个,今天我们就主要来弄明白在高性能的I/O设计中的几个关键概念,做任何事最重要的第一步就是要把概念弄的清晰无误不是么?在这里就是:阻塞,非阻塞,同步,异步. OK, 现在来 ...
- Python番外之 阻塞非阻塞,同步与异步,i/o模型
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步/异步主要针对C端: 同步: 所谓同步,就 ...
- Netty基础系列(2) --彻底理解阻塞非阻塞与同步异步的区别
引言 在进行I/O学习的时候,阻塞和非阻塞,同步和异步这几个概念常常被提及,但是很多人对这几个概念一直很模糊.要想学好Netty,这几个概念必须要掌握清楚. 同步和异步 同步与异步的区别在于,异步基于 ...
随机推荐
- python zip()函数的使用
解释: 后缀为zip的文件肯定都见过吧?zip是打包压缩好的一个文件,所以,zip()函数也简单的理解为打包压缩函数,将不同个数相同类型的字段结合在一起. 官方定义为:zip() 函数用于将可迭代的对 ...
- Linux 上 nginx配置
1:安装工具包 wget.vim和gcc yum install -y wget yum install -y vim-enhanced yum install -y make cmake gcc g ...
- bzoj3718 树状数组
https://www.lydsy.com/JudgeOnline/problem.php?id=3718 有时候,要透过题面看到本质 题意 你的老板命令你将停车场里的车移动成他想要的样子.停车场是一 ...
- jmeter每10个停一会实现方案
foreach控制器中加个if控制器,if控制器条件${__groovy("${__counter(TRUE,)}".toInteger() % 10 == 0,)},再往if控制 ...
- SpringBoot项目部署在同一个tomcat容器报错
在一个Tomcat容器中部署了两个springboot的应用,在启动时发现一直都是第一个启动的项目能启动成功,第二个项目启动报错,错误信息如下: 2018-01-30 15:49:27.810 ERR ...
- Spring Boot项目中的字体文件问题_Failed to decode downloaded font
1.问题:字体文件加载失败,本来应该是“X”号,现在只有一个小方块 2.原因:问题是Maven正在过滤字体文件并破坏它们. <resource> <filtering>true ...
- Python list 初始化技巧
1.一维列表 1.1 递增列表 # 初始化递增的list,与L = [i for i in range(10)] 效果相同 L = range(10) # 版本变化L = i for i in ran ...
- MySql笔记二:命令简介
从笔记二开始讲解一些简单的命令,这些我在SQL Server里面都讲过了,什么主键,约束啥的数据库这些都是相通的,所以MySql这里,不讲,粗略过一遍. 使用命令框登录MySql mysql -u r ...
- Ubuntu 云服务器上部署自己的 Rails 应用
自学rails一段时间了,之前只用heroku部署了网站,想尝试把网站以一个更“正经”的方式呈现出来,就买了一个阿里云服务器.参考了网上部分rails部署教程,过程中也遇到了一些问题,所以在完成之后总 ...
- ACM-ICPC 2018 焦作赛区网络预赛 B Mathematical Curse(DP)
https://nanti.jisuanke.com/t/31711 题意 m个符号必须按顺序全用,n个房间需顺序选择,有个初始值,问最后得到的值最大是多少. 分析 如果要求出最大解,维护最大值是不能 ...