首页 > 其他分享 >同步,异步,阻塞,非阻塞的区别

同步,异步,阻塞,非阻塞的区别

时间:2023-04-08 21:12:28浏览次数:37  
标签:异步 同步 小明 阻塞 调用 奶茶

同步,异步,阻塞,非阻塞的区别

同步与异步

同步与异步的重点在消息通知的方式上 , 也就是调用结果通知的方式 ;

同步 : 当一个同步调用发出去后 , 调用者要一直等待调用结果的通知 , 直到得到调用结果 ;

异步 : 当一个异步调用发出去后 , 这个调用就直接返回了 , 调用者不能立即得到调用结果的返回 , 而是在调用发出后 , 被调用者通过状态 , 通知来通知调用者 , 或通过回调函数处理这个调用 ;

异步调用要想获得结果 , 一般有两种方式 :

主动轮询异步调用的结果
被调用方通过 callback通知调用方调用结果
举个例子 :

同步买奶茶 : 小明点单交钱 , 然后等着拿奶茶 ;
异步买奶茶 : 小明点单交钱 , 店员给小明一个小票 , 等小明奶茶做好了再来取 ;
异步买奶茶 , 小明要想知道奶茶是否做好了 , 有两种方式 :

小明主动去问店员 , 一会就去问一下 : "奶茶做好了吗?"... 直到奶茶做好 ;
等奶茶做好了 , 店员喊一声 :"小明 , 奶茶好了!" , 然后小明去取奶茶 ;

阻塞与非阻塞

阻塞与非阻塞的重点在于进/线程等待消息时候的行为 , 也就是在等待消息的时候 , 当前进/线程是挂起状态 , 还是非挂起状态;

阻塞调用发出去后 , 在消息返回之前 , 当前进/线程会被挂起 , 直到有消息返回 , 当前进/线程才会被激活 ;
非阻塞调用发出去后 , 不会阻塞当前进/线程 , 而会立即返回 ;
举个例子 :

阻塞买奶茶 : 小明点单交钱 , 干等着拿奶茶 , 什么事都不做 ;
非阻塞买奶茶 : 小明点单交钱 , 等着拿奶茶 , 等的过程中 , 时不时刷刷微博 , 朋友圈...

总结

同步与异步 , 重点在于消息通知的方式 ;

阻塞与非阻塞 , 重点在于等消息时候的行为 ;

所以 , 就有了下面4种组合方式 :

同步阻塞 : 小明在柜台干等着拿奶茶 ;
同步非阻塞 : 小明在柜台边刷微博边等着拿奶茶 ;
异步阻塞 : 小明拿着小票啥都不干 , 一直等着店员通知他拿奶茶 ;
异步非阻塞 : 小明拿着小票 , 刷着微博 , 等着店员通知他拿奶茶 ;

标签:异步,同步,小明,阻塞,调用,奶茶
From: https://www.cnblogs.com/ydssx7/p/17299235.html

相关文章

  • STM32F401串口2的异步发送
    本文使用Nucleo-F401RE这块板,目的是学习STM32平台上串口的使用方法。只描述如何操作寄存器以发送给定数据且不使用中断。接收数据的方法自行类比。准备工作:一、打开芯片的Datasheet。找到引脚功能映射表,选择要使用的串口对应的功能引脚。这里使用PA2和PA3的07号功能,即USART2-TX......
  • mogodb 同步数据到 ElasticSearch
    1、需安装:mogodb  ElasticSearch monstache2、mogodb创建副本集主副主开启副本集设置:replication:replSetName:"S1"副机关闭防火墙,设置net:port:27017bindIp:0.0.0.0"C:\ProgramFiles\MongoDB\Server\4.4\bin\mongo.exe"127.0.0.1:27017配置:rs.initiate({......
  • FP5217兼容TPS61178,内置MOS双节锂电池升压输出12V/3A异步升压芯片
    FP5217是一顆非同步电流模式DC-DC升压转换器,内置MOS,输入低启动电压2.5V与电压工作范围5V~24V,单节锂电池3V~4.2V应用,能精准地反馈电压1.2V,内置软启动时间,外部可编程工作频率,可编程电感器峰值电流限制将电阻从CSPin连接到GND。封装:TSSOP-14(EP)。应用:蓝牙音响,大功率拉杆音箱,应......
  • logback&log4j2异步日志
    Springboot项目默认使用的是logback做日志。在qps比较高的时候我们希望日志异步打印,同步打印日志可能造成打日志都影响性能。下面研究其用法。1.logback0.logback配置<?xmlversion="1.0"encoding="UTF-8"?><configuration><!---日志存放位置--><!--1.......
  • flask-day5——python项目高并发异步部署、uwsgi启动python的web项目不要使用全局变量
    目录一、python项目高并发异步部署二、uwsgi启动Python的Web项目中不要使用全局变量三、信号3.1flask信号3.2django信号四、微服务的概念五、flask-script六、sqlalchemy快速使用七、sqlalchemy快速使用4.1原生操作的快速使用八、创建操作数据表九、作业1、什么是猴子补丁,有什......
  • 同步合约数据到数据库经典案例1
    之前在《数字藏品发行平台的架构》里讲过,有一种架构希望以区块链的数据为核心。这样就需要将合约保存在区块链上的数据同步到数据库里,方便后续中间件接口的开发。本次我们以同步ConfirmSale事件日志为例,介绍数据同步程序开发的相关知识点。一、先上全部代码```javascriptconst{......
  • Java | 一分钟掌握异步编程 | 5 - CompletableFuture异步
     作者:Mars酱 声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。 转载:欢迎转载,转载前先请联系我!前言继续讲,前面讲了Future实现异步,优点缺点也都有,这里讲使用CompletableFuture机制,目前为止,应该说JDK原生提供的异步方式的最优方案就是CompletableFuture了,已知的开源......
  • 直驱式永磁同步风力发电系统的仿真模型
    直驱式永磁同步风力发电系统的仿真模型YID:5365668131862029......
  • Python 异步: 常见问题 Part_1(23)
    动动发财的小手,点个赞吧!本节回答开发人员在Python中使用asyncio时提出的常见问题。1.如何停止任务?我们可以通过asyncio.Task对象上的cancel()方法取消任务。如果任务被取消,cancel()方法返回True,否则返回False。...#cancelthetaskwas_cancelled=task.cancel......
  • Java多线程之共享资源和同步
    一、竞争条件所谓竞争条件,即两个或更多的任务竞争响应某个条件,因此产生冲突或不一致结果的情况。IntGenerator.java生成一个整数:publicabstractclassIntGenerator{privatevolatilebooleancanceled=false;(1)publicabstractintnext();(2)public......