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

同步阻塞和异步非阻塞是什么?

一、同步阻塞(Synchronous Blocking)

定义:发起请求后,当前线程会一直等待结果返回,期间无法执行其他任务,就像"打电话点外卖,一直等对方确认,没确认不干别的"。
关键特点:

  1. 线程挂起:等待期间线程被"冻结",占用CPU资源却无法做任何事情。
  2. 顺序执行:任务必须按顺序完成,前一步未完成,后一步无法启动。
  3. 简单但低效:适合简单场景,但高并发时易成为性能瓶颈。
    生活例子:
  • 排队买奶茶:你站在柜台前,必须等前面所有人买完才能轮到自己,期间只能干等。
  • 传统ATM取款:你站在机器前,必须等操作完成才能离开,期间无法做其他事。
    编程场景:
  • Java BIO(同步阻塞IO):服务器每处理一个客户端请求,需创建一个新线程阻塞等待响应,线程数过多会导致资源耗尽。
  • PHP-FPM默认模式:请求处理期间,进程被完全占用,无法响应其他请求。

二、异步非阻塞(Asynchronous Non-blocking)

定义:发起请求后,线程立即返回继续执行其他任务,结果通过回调或通知机制获取,就像"点外卖后继续干别的,等送到后通知你"。
关键特点:

  1. 线程不挂起:等待期间线程可处理其他任务,资源利用率高。
  2. 事件驱动:通过回调函数、Future/Promise等机制获取结果,无需主动轮询。
  3. 高并发友好:适合IO密集型场景,如网络请求、文件读写。
    生活例子:
  • 在线点餐:下单后继续工作,等外卖小哥打电话通知你取餐。
  • 柜台取号:提交请求后取个号,坐在椅子上刷手机,等广播通知才去办理。
    编程场景:
  • Node.js:基于事件循环和回调机制,单线程处理大量并发请求。
  • Java NIO/AIO:通过Selector多路复用或CompletableFuture实现异步非阻塞IO,提升吞吐量。
  • Python asyncio:协程实现并发任务调度,避免线程切换开销。

三、核心区别对比

维度同步阻塞异步非阻塞
线程状态阻塞等待,无法执行其他任务非阻塞,可继续处理其他任务
资源占用浪费CPU资源(线程挂起)高效利用CPU资源
适用场景简单任务、顺序依赖强的场景高并发、IO密集型场景
编程复杂度低,逻辑清晰高,需处理回调或状态管理
典型例子传统银行排队、BIO网络模型Node.js、Nginx、异步协程

四、为什么异步非阻塞更高效?

  1. 避免线程浪费:线程在等待IO时不会闲置,可处理其他请求,提升吞吐量。
  2. 减少上下文切换:单线程通过事件循环管理任务(如Node.js),避免多线程切换开销。
  3. 扩展性更强:适合大规模并发,如百万级连接的服务器(如Nginx)。
    反例:如果用同步阻塞处理10万QPS请求,服务器线程会被完全占满,导致响应超时;而异步非阻塞可通过少量线程高效调度任务。

五、如何选择?

选同步阻塞:任务简单、依赖严格顺序、资源充足(如单线程计算)。

  • 选异步非阻塞:高并发、IO密集型、资源敏感(如Web服务器、实时消息系统)。

💡 总结:同步阻塞是"一根筋",干一件事等结果;异步非阻塞是"多线程玩家",边干边等效率翻倍。现代系统追求高性能,异步非阻塞已成为主流方案,但需权衡复杂度与收益。

http://www.dtcms.com/a/349269.html

相关文章:

  • Web开发中的CGI:通用网关接口详解
  • 软件测试用例指南:覆盖 6 大设计方法
  • 二、GP/GS流程图
  • Spring面试题及详细答案 125道(16-25) -- 核心概念与基础2
  • 工程师的自我修养
  • Linux --网络基础概念
  • 08-系统能力调用与权限管理
  • Python爬虫-解决在抓包的过程中,找不到接口地址的问题
  • ViLU: Learning Vision-Language Uncertainties for Failure Prediction
  • C++ 容器——vector
  • PyTorch入门实战:MNIST数据集加载与可视化详解
  • 一、基因组选择(GS)与基因组预测(GP)
  • 【K8s】整体认识K8s之namespace
  • OpenIM应用机器人自动应答
  • 基于陌讯视觉算法的扶梯大件行李识别技术实战:误检率↓79%的工业级解决方案
  • 大模型中的意图识别
  • DMA-API(alloc和free)调用流程分析(十)
  • 胸部X光片数据集:健康及肺炎2类,14k+图像
  • 【网络运维】Shell脚本编程:函数
  • 大件垃圾识别精准度↑90%!陌讯多尺度融合模型在智慧环卫的落地实践
  • 鸿蒙ArkTS 基础篇-03-对象
  • 【黑色星期五输出当年有几个】2022-10-23
  • 单词搜索+回溯法
  • Windows客户端部署和管理
  • Week 13: 深度学习补遗:RNN的训练
  • 青少年软件编程(python五级)等级考试试卷-客观题(2023年12月)
  • 2024年09月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 使用 LangGraph + Zep 打造一款有记忆的心理健康关怀机器人
  • 【LLIE专题】一种用于低光图像增强的空间自适应光照引导 Transformer(SAIGFormer)框架
  • 超级助理:百度智能云发布的AI助理应用