当前位置: 首页 > news >正文

同步、异步、阻塞、非阻塞

https://blog.csdn.net/historyasamirror/article/details/5778378

同步 & 异步:同步与异步是针对多个事件(线程/进程)来说的。

同步:如果事件A需要等待事件B的完成才能完成,这种串行执行机制可以说是同步的,这是一种可靠的任务序列,要么都成功,要么都失败。
异步:如果事件B的执行不需要依赖事件A的完成结果,这种并行的执行机制可以说是异步的。事件B不确定事件A是否真正完成,所以是不可靠的任务序列。
区别:同步异步可以理解为多个事件的执行方式和执行时机如何,是串行等待还是并行执行。同步中依赖事件等待被依赖事件的完成,然后触发自身开始执行,异步中依赖事件不需要等待被依赖事件,可以和被依赖事件并行执行,被依赖事件执行完成后,可以通过回调、通知等方式告知依赖事件。

阻塞 & 非阻塞:阻塞与非阻塞是针对单一事件(线程/进程)来说的。

阻塞:如果一个事件在发起一个调用之后,在调用结果返回之前,该事件会被一直挂起,处于等待状态。
非阻塞:如果一个事件在发起调用以后,无论该调用当前是否得到结果,都会立刻返回,不会阻塞当前事件。
区别:阻塞与非阻塞可以理解为单个事件在发起其他调用以后,自身的状态如何,是苦苦等待还是继续干自己的事情。非阻塞虽然能提高CPU利用率,但是也带来了系统线程切换的成本,需要在CPU执行时间和系统切换成本之间好好估量一下。

同步/异步/阻塞/非阻塞 IO 的区别?

https://www.zhihu.com/question/19732473

同步(Synchronous):当一个同步调用发出后,调用者要一直等待返回结果。通知后,才能进行后续的执行。

异步( Asynchronous):当一个异步过程调用发出后,调用者不能立刻得到返回结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。

阻塞( Blocking ):是指调用结果返回前,当前线程会被挂起,即阻塞。

非阻塞( Nonblocking):是指即使调用结果没返回,也不会阻塞当前线程。

相关文章:

  • BIO,NIO,AIO,多路复用IO?
  • 【Web API系列教程】3.4 — 实战:处理数据(处理实体关系)
  • 输出由几个无重复数字组成的三位数(内测第0届第3题)
  • 讲一下线程和进程的区别和联系?
  • 正则
  • 讲一下线程状态并且解释一下?
  • windows 和 linux ssh互连
  • 【代码规范】
  • 【程序员眼中的统计学(12)】相关与回归:我的线条如何? (转)
  • 讲一下进程间通讯方式?
  • Docker的文件系统
  • 信号和信号量有什么区别?
  • 进程的调度算法有哪些?
  • ORA-00604 ORA-14452 ORA-20783
  • 线程同步的四种方式
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 345-反转字符串中的元音字母
  • bootstrap创建登录注册页面
  • express如何解决request entity too large问题
  • extract-text-webpack-plugin用法
  • JavaScript的使用你知道几种?(上)
  • js如何打印object对象
  • React中的“虫洞”——Context
  • Sass Day-01
  • 讲清楚之javascript作用域
  • 经典排序算法及其 Java 实现
  • 前端知识点整理(待续)
  • 算法---两个栈实现一个队列
  • 移动端 h5开发相关内容总结(三)
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (阿里云万网)-域名注册购买实名流程
  • (二十三)Flask之高频面试点
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (篇九)MySQL常用内置函数
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)JAVA中的堆栈
  • ***通过什么方式***网吧
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net分布式压力测试工具(Beetle.DT)
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [1181]linux两台服务器之间传输文件和文件夹
  • [51nod1610]路径计数
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [Java][方法引用]构造方法的引用事例分析
  • [LeetCode] Minimum Path Sum
  • [LeetCode]剑指 Offer 42. 连续子数组的最大和
  • [Power Query] 分组依据