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

同步和异步、阻塞和非阻塞的再理解

同步阻塞

调用方发起I/O操作后,必须等待操作完成才能继续执行后续代码。在此期间,调用方线程会被挂起(阻塞),无法执行其他任务。

典型场景:传统Socket编程中的read()/write()调用,数据库查询等待结果返回。

同步非阻塞

调用方发起I/O操作后立即返回,但需要主动轮询检查操作是否完成。线程不会被挂起,但需要消耗CPU资源进行状态检查。

典型场景:Java NIO的Selector机制,或通过fcntl()设置文件描述符为非阻塞模式。

异步非阻塞

调用方发起I/O操作后立即返回,系统通过回调机制通知操作完成。调用方线程无需等待或轮询,可以继续执行其他任务。

典型场景:Node.js的Event Loop,Linux的io_uring,或C++的std::async

异步阻塞

一种较少使用的模式,调用方通过阻塞方式等待异步操作完成。例如调用异步API后,立即使用阻塞调用等待结果。

典型场景:Python的asyncio.run_until_complete(),或Java的Future.get()

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

相关文章:

  • JAVA核心基础篇-集合
  • 力扣(组合)
  • 如何解决 pyqt5 程序“长时间运行失效” 问题?
  • React学习(十一)
  • Windows 平台查看端口占用情况并终止进程
  • flink常见问题之非法配置异常
  • leetcode 852 山脉数组的顶峰索引
  • 讲点芯片验证中的统计覆盖率
  • 【URP】[平面阴影]原理与实现
  • 如何使用和优化SQL Server存储过程:全面指南
  • 论文阅读:arxiv 2025 Can You Trick the Grader? Adversarial Persuasion of LLM Judges
  • 【数据分享】地级市对外开放程度(2002-2021)-有缺失值
  • SpringBoot自动装配原理深度解析
  • 【LeetCode 热题 100】300. 最长递增子序列——(解法一)记忆化搜索
  • mmap映射物理内存之四内核cache同步
  • 后台管理系统-14-vue3之tag标签页的实现
  • JEI(Journal of Electronic lmaging)SCI四区期刊
  • TypeScript的接口 (Interfaces)讲解
  • Python 版本与 package 版本兼容性检查方法
  • 定时任务——ElasticJob原理
  • ChipCamp探索系列 -- 4. Intel CPU的十八代微架构
  • 【背诵2025】测试
  • 数据结构与算法——树和二叉树
  • 【科研绘图系列】浮游植物的溶解性有机碳与初级生产力的关系
  • 大麦APP抢票
  • 数据结构 之 【AVL树的简介与部分实现】(部分实现只涉及AVL树的插入问题,包括单旋((右单旋、左单旋))、双旋(左右单旋、右左单旋)等操作)
  • 国家自然科学基金(国自然基金)申请技巧详解
  • materials studio中的两种坐标系
  • 基于RISC-V架构的国产MCU在eVTOL领域的应用研究与挑战分析
  • leetcode(同向双指针 滑动窗口)209.长度最小的子数组 713.乘积小于K的子数组 3.无重复字符的最长子串