首页 > 其他分享 >同步和异步,阻塞和非阻塞

同步和异步,阻塞和非阻塞

时间:2023-03-30 14:22:08浏览次数:53  
标签:异步 同步 请求 服务员 阻塞 线程 客户端

同步和异步,阻塞和非阻塞-结合一个例子简单说明

同步和异步

针对请求的客户端和请求的连接

例如:客户端有一个请求的连接,我要去请求服务器端处理一个数据返回一个结果,但是服务端计算这个结果的过程很长

在同步状态下面,这个连接就要处于一直等待的状态 ==》同步

客户端不想等了,发出请求后就想直接连接返回 ==》异步

在异步状态下客户端实际没有真正得到服务端返回的结果,所以在异步处理请求的方式下面往往还需要有一个消息回写的接口或者服务。待服务端把结果算出来后,再通过另一个消息回写把数据给你

阻塞和非阻塞

针对的是服务端的请求线程,或者说是服务端的处理线程

例如:客户端查询一个大数据,那么对于服务器的APP server端可以把它理解为请求线程,而实际数据库查这个数据的过程可以把它理解为处理线程

线程阻塞:在阻塞的情况下面,这个线程不能够去做其他的事情。请求线程要一直处于等待的状态

非阻塞:当请求线程发出请求给处理线程之后,不用一直在那等待,请求的线程可以快速的释放回资源池去处理其他的请求。但这个请求线程每隔10s,20s可能要去轮询下处理线程处理过程有没有完成。有完成后就拿着结果返回到客户端去

小结

同步和异步是针对客户端,针对请求的连接来说的

阻塞和非阻塞是针对服务端,针对请求的线程来说的

四种场景

2*2得到4种场景

假设顾客到餐馆去吃饭,顾客可以理解为请求端或客户端

到餐馆后发现任何一个餐馆既有服务员又有厨师,服务员可以理解为请求线程,厨师理解为处理线程

同步加阻塞

image

顾客点了一个菜,把点的菜交给服务员后,服务员再把点的菜传递给厨师,厨师拿到菜单马上就去做

顾客不能去做其他的事情,服务员把菜传给厨师后服务员也处于等待状态,不能去服务其他的顾客

同步加非阻塞

image

顾客点完菜以后同样不能够去做其他的事情,依然处于同步等待的状态

但这时服务员把菜单拿给后厨以后,服务员可以去服务其他的顾客。同时服务员可能每隔两分钟去问后厨菜是否做好

客户请求端仍然时刻等待,但是请求线程可以灵活的去做其他事情

异步加阻塞

image

点完菜以后,和服务员说自己出去溜达下,菜做好就服务员通知自己

服务员把菜单传给后厨以后,服务员一直在那等着

此时客户端可以灵活的去做其他事情,但请求线程处于绑定的状态

异步加非阻塞

image

作为顾客作为请求端可以灵活地去做其他事情

对于服务员把菜单传到后厨以后她也可以去服务其他顾客

异步下面的关键点

在异步时会启用处理线程端的消息队列

也就是说服务员把菜单传给后厨以后,会放在后厨的台面上面,这就是后厨的处理队列

特别的

当谈到异步时,没有必要去区分异步阻塞还是异步非阻塞

在异步的情况下面线程端阻塞和非阻塞没有意义

其他

异步的行为是增加吞吐量,并不能节省结果的处理时间。

阻塞和非阻塞是在线程层面说的。

标签:异步,同步,请求,服务员,阻塞,线程,客户端
From: https://www.cnblogs.com/ydssx7/p/17272519.html

相关文章

  • Java异步编程CompletableFuture
    Java通过多线程可以实现异步编程,下面是一个使用Java多线程实现异步编程的示例:publicclassAsyncDemo{publicstaticvoidmain(String[]args){Exec......
  • 永磁同步电机的控制算法仿真模型 MRAS无传感器矢量控制 SMO无传感器矢量控制
    永磁同步电机的控制算法仿真模型:1.永磁同步电机的MRAS无传感器矢量控制:2.永磁同步电机的SMO无传感器矢量控制(反正切+锁相环);3.永磁同步电机DTC直接转矩控制;4.永磁同......
  • 后端手册--21--异步任务
    异步任务yudao-spring-boot-starter-job (opensnewwindow)技术组件,除了提供定时任务的功能,还提供了Async异步任务的能力。系统使用异步任务,提升执行效率。例如说:......
  • 达梦查看阻塞会话
    selects.sess_id,s.SQL_TEXT,s.RUN_STATUSfromv$sessionss,v$locklwherel.tid=s.trx_Idandl.blocked=1;P_CLOSE_SESSION(SESS_ID)来关闭对应的会话select'SP......
  • sql server 查找阻塞
    CREATEPROCEDURE[dbo].[sp_who_lock]ASBEGINDECLARE@spidINT,@blINT,@intTransactionCountOnEntryINT,......
  • Mysql主从同步
    一、主从复制的重要性   日常系统业务流量的增长,一台MySQL数据库服务器已经满足不了需求了,会负载过重,容易出现查询效率慢、宕机的情况,导致用户体验差、数据的丢失。......
  • Matlab风电光伏储能分布式能源微电网运行,并网运行,虚拟同步机控制策略
    Matlab风电光伏储能分布式能源微电网运行,并网运行,虚拟同步机控制策略,VSG风电,储能,光伏封不是电源带直流负载独立运行断开直流负载后,将模型转换为风光储+VSG+交流负载引入......
  • 基于farrow结构的时间同步算法matlab仿真
    1.算法描述         采样速率转换(SRC)在通信中非常普遍。一般有两种方法:一种是通过D/A重构信号,再采样,从而实现采样速率的转换;另一种是利用数字滤波器直接进行采样......
  • MySQL 5 从安装到同步
    安装部分创建用户和组由于采用直接初始化方式所以用户不会自动创建需要为mysql手动创建用户与组;创建组groupaddmongodbtest创建用户useraddmongodbtest-gmongod......
  • asp.net 应用程序中同步方法调用异步方法无响应解决方法
    微软发布C#async/await异步语法功能已经好久了,但是目前来看使用并不广泛。本人经过实践在开发过程中使用async/await一路到底确实很爽,而且也没有啥问题。但是在面对旧......