0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解同步异步和阻塞非阻塞

汽车玩家 来源:简书 作者:coding400 2020-05-03 17:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

同步、异步

同步、异步分别指的是一种通讯方式,当 cpu 不需要执行线程上下文切换就能完成任务,此时便认为这种通讯方式是同步的,相对的如果存在cpu 上下文切换,这种方式便是异步。

详解同步异步和阻塞非阻塞

这里通过一个去食堂打饭的示例来理解什么是同步、异步

同步

假设现是上午最后一节课,由于小李上课的教室离食堂比较远,当下课之后,如果小李跑得不够快,那么到食堂之后会发现别人已经早你一步到达了,而小李又是个三好学生,又不能插队,此时小李只能悲痛欲绝的排在打饭窗口A的队伍最后一个人后面,依次等待轮到小李填写菜单然后取饭

异步

同样的场景,当小李跑到食堂之后,由于身体不好,已经气喘吁吁,此时又想找个位置休息下,又太饿,想去排队打饭。还好,窗口B 提供了这个功能,打饭的人先去取号并填写菜单,然后就可以去做其他事情,等到排的号到小李了之后,食堂阿姨会通过这个号码来呼叫你来取已经做好的饭,这时你心中一喜,这不就是我现在需要的么,于是你拿了号及填写菜单之后,便去找个位置占着,一边等待食堂阿姨叫你来取饭,同时还可以与朋友聊聊人生

总结可以看出,同步的方式的耗时包含了:1.排队等待 2.填写菜单 3.等待厨师做好而异步的方式则可以直接填写好菜单、取个号然后交给食堂阿姨之后,便可以去做其他的事情,完全没有等待的耗时,只需要在食堂阿姨呼唤你的时候,来取饭即可。

异步通常能提高系统的吞吐量,从 Servlet 3.0 便支持通过异步的方式来处理请求,当然这并不代表它什么都好,缺点是会降低系统的一部分响应时间,而且增加了系统的复杂度,使调试困难 同步相对的便是,编程简单,响应速度快,不需要对线程上下文进行切换

阻塞、非阻塞

阻塞、非阻塞指的是在同步模式下,如果当前线程一直在等待响应数据并且不能做其他事情那么认为是阻塞的,如果当前线程在等待响应数据返回的同时,又可以干其他的时,那么则是非阻塞的

详解同步异步和阻塞非阻塞

同样的,这里再次使用食堂打饭的场景

阻塞

当小徐到食堂时,已经有许多人在排队打饭了,这时小徐无奈之下,选择了离她最近的窗口A排队打饭,然后等待的时间总是漫长的,这时她百般无聊下,想拿出她的手机准备消磨下时间,结果她突然想起手机还在教室!虽然站在这里排队打饭没有手机玩,但也是不幸中的万幸了,总算手机没丢

非阻塞第二次,小徐再次来到食堂,发现食堂新增了取号的功能,但是只能取号,不能填写菜单,最终还是选择了这家取号的窗口B,等着叫号然后写菜单就可以了,小徐兴高采烈的玩起了手机,刷起了简书

总结

当你排队在窗口A的时候,此时不能做其他任何事情,只能等着队伍到自己这,然后填写菜单,最后等待取饭,此时在整个排队的周期内都不能干其他事情 而在窗口B则可以通过取号的方式,让你不需要时刻的去站着排队,而是可以去刷刷简书、打打游戏

JDK中的BIO 对应的就是阻塞IO,NIO 对应的是非阻塞IO,通过非阻塞IO,可以让一个线程处理成千上万的并发请求

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11332

    浏览量

    225987
  • 阻塞
    +关注

    关注

    0

    文章

    24

    浏览量

    8454
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    同步复位和异步复位到底该用哪个

    做FPGA/数字IC设计的,平时写得最多的可能就是复位逻辑了。但你有没有这种感觉:看别人代码,有的用同步复位,有的用异步复位,有的又搞什么"异步复位同步释放"——到底该用哪个?
    的头像 发表于 04-22 09:42 413次阅读
    <b class='flag-5'>同步</b>复位和<b class='flag-5'>异步</b>复位到底该用哪个

    淘宝券后价异步数据

    淘宝 券后价异步数据 ,核心是 阻塞、批量、延迟获取 商品券后价(原价 - 优惠券),适合大规模商品监控、比价、选品场景。淘宝官方无直接 “券后价异步接口”,需通过 官方 API 组
    的头像 发表于 03-25 15:39 163次阅读

    电信接收机 IF/RF 前端 SAW 滤波方案:70–300MHz 选择性提升 + 阻塞防护 + 匹配验证全流程(FSF-5050 系列)

    电信接收机 IF/RF 前端易受强带外干扰引发压缩、互调与阻塞,DSP 难补救。本方案以 SAW 滤波器为“门禁”,覆盖 70–300MHz IF 规划,给出放置位置、IL/阻带/群时延取舍、匹配与 PCB 要点,并提供 VNA+阻塞测试验证流程,适配 FSF 5×5mm
    的头像 发表于 01-29 14:00 1263次阅读
    电信接收机 IF/RF 前端 SAW 滤波方案:70–300MHz 选择性提升 + <b class='flag-5'>阻塞</b>防护 + 匹配验证全流程(FSF-5050 系列)

    单片机中的串口通讯串行同步通信与串行异步通信

    的两种基本串行通信方式包括同步通信和异步通信。 串行同步通信 同步通信(SYNC:synchronous data communicaTIon)是指在约定的通信速率下,发送端和接
    发表于 01-15 08:06

    解析SN65LVDS125A和SN65LVDT125A:4x4阻塞交叉点开关的卓越性能

    解析SN65LVDS125A和SN65LVDT125A:4x4阻塞交叉点开关的卓越性能 在电子设计领域,高速信号处理和灵活的信号路由是许多应用的关键需求。德州仪器(TI)的SN65LVDS125A
    的头像 发表于 12-29 17:40 756次阅读

    探索SN65LVDS125A和SN65LVDT125A:4x4阻塞交叉点开关的卓越性能

    探索SN65LVDS125A和SN65LVDT125A:4x4阻塞交叉点开关的卓越性能 在当今高速发展的电子领域,数据传输和信号处理的速度和效率至关重要。而SN65LVDS125A
    的头像 发表于 12-29 17:40 967次阅读

    深入解析SN65LVDS250与SN65LVDT250:高性能4x4 LVDS交叉点开关

    ,咱们就来详细剖析德州仪器(Texas Instruments)推出的SN65LVDS250与SN65LVDT250这两款4x4阻塞交叉点开关,看看它们究竟有哪些独特的性能和优势。 文件下载
    的头像 发表于 12-29 17:10 713次阅读

    具有阻塞总线恢复功能的 TCA4307 热插拔 I²C 总线和 SMBus 缓冲器介绍

    具有阻塞总线恢复功能的 TCA4307 热插拔 I²C 总线和 SMBus 缓冲器介绍 在电子设计领域,热插拔 I²C 总线缓冲器是实现系统灵活扩展和维护的重要组件。今天,我们就来深入了解一下
    的头像 发表于 12-17 15:40 559次阅读

    飞凌嵌入式ElfBoard-文件I/O的深入学习之阻塞I/O与阻塞I/O

    可能会使程序阻塞等待,直到有数据可读时才会被唤醒返回。 普通文件的读写操作是不会阻塞的,不管读写多少个字节数据,read或 write一定会在有限的时间内返回,所以普通文件一定是以阻塞
    发表于 12-01 13:07

    CH32V307 串口发送阻塞的原因?怎么解决?

    */ modbus_set_rx_mode(master); modbus发送,不知为何阻塞在rt_device_write,初始化 find open 正常
    发表于 09-18 06:06

    【HZ-RK3568开发板免费体验】基于 Select Poll的TCP发服务器

    ,一般分为网络IO(本质就是socket读写)和磁盘IO。 IO模型大致可以分为:同步阻塞同步阻塞
    发表于 08-19 22:01

    从底层解读labview的TDMS高级异步写入的工作原理

    的数据生成线程)点菜(调用异步写入函数)。服务员(异步写入函数)记下订单后立即转身离开去服务下一位顾客(不阻塞顾客),而不是站在厨房门口等厨师做完这道菜才回来(同步)。订单(写入请求)
    发表于 08-14 17:05

    AMD FPGA异步模式与同步模式的对比

    本文讲述了AMD UltraScale /UltraScale+ FPGA 原生模式下,异步模式与同步模式的对比及其对时钟设置的影响。
    的头像 发表于 07-07 13:47 1821次阅读

    CH32V307串口发送阻塞的原因?如何解决?

    */ modbus_set_rx_mode(master); modbus发送,不知为何阻塞在rt_device_write,初始化 find open 正常
    发表于 06-11 08:05

    安徽京准:北斗卫星同步时钟的安装与调试详解

    安徽京准:北斗卫星同步时钟的安装与调试详解
    的头像 发表于 06-05 10:08 1779次阅读
    安徽京准:北斗卫星<b class='flag-5'>同步</b>时钟的安装与调试<b class='flag-5'>详解</b>