前言🔖
异步(Async)在计算机底层到底是怎么实现的?
分 4 层讲,从硬件 → 操作系统 → 语言 → 代码,你看完就彻底懂了。
🔹核心真理:异步 = 不阻塞、不等待、不占线程、靠 “通知” 完成。
- 同步:我做完,你才能做。
- 异步:我去忙,你别等,做完我通知你。
🔹底层第一原理:CPU 不能同时干两件事
单核 CPU 同一时刻只能执行一条指令。
那为什么异步能 “同时” 做很多事?
因为:异步不是 “同时执行”,而是 “快速切换执行”!
这叫 并发(Concurrency)。
操作系统底层:异步靠 3 个东西实现🔖
🔹1. 中断(Interrupt)—— 异步的硬件基础
键盘、网卡、硬盘、鼠标,全是异步工作。
所有异步,最早来源都是硬件中断。
例子:
你读取硬盘文件:
CPU 发指令:读硬盘
CPU 不等!直接去干别的
硬盘读完 → 发 硬件中断
CPU 停下手里事 → 处理数据
这就是最原始的异步。
🔹2. 非阻塞 I/O(Non-blocking I/O)
所有异步 99% 都是为了解决 I/O 等待:
- 读文件
- 发网络请求(AJAX)
- 读数据库
- 调用接口
所有异步的本质都是:
I/O 操作不阻塞线程,CPU 直接离开。
同步:
读文件 → 等待 → 读完 → 继续 CPU 说:读硬盘! CPU 原地死等 → 啥也不干 硬盘读完 → CPU 继续
异步:
读文件 → 立刻返回 → CPU 去做别的 → 读完通知 → 回来处理 CPU 说:读硬盘! CPU 立刻走了 → 去干别的 硬盘读完 → 发中断通知 OS OS 告诉程序:好了!
这就是异步的本质:
CPU 绝对不等待慢速设备(硬盘 / 网络),设备完成后主动通知。
🔹3. 事件循环(Event Loop)—— 异步的大脑
操作系统会维护一个队列:
- 键盘按下 → 进队列
- 网络数据回来 → 进队列
- 定时器到时间 → 进队列
- 文件读完 → 进队列
CPU 不断循环:队列有任务就执行,没有就休息。
这叫 Event Loop(事件循环)
Node.js、浏览器、JavaScript、Python asyncio、ServiceNow 客户端脚本
全部靠 Event Loop 实现异步。
它的工作超级简单:
Event Loop 无限循环:
1.看有没有任务要执行 有2.就执行 3.没有就休眠 CPU(极低功耗) 4.外部事件来了(网络、硬盘、定时器)→ 唤醒 5.执行回调
这就是异步的全部真相!
🔹4. 编程语言:回调函数(Callback)
语言只是把操作系统的异步包装成函数。
你告诉系统:
等这件事做完,帮我调用这个函数。
这个函数就是 callback。
总结🔖
异步在计算机底层的实现:
- 硬件中断 → 设备主动通知 CPU,不轮询、不等待
- 非阻塞 I/O → CPU 不卡等慢速设备,直接离开
- 事件队列 + 事件循环(Event Loop) → 管理任务与回调
- 回调函数 → 事件完成后执行的代码
一句话:异步 = CPU 不等待 I/O,靠中断 + 通知 + 回调回来继续执行。