计算机基础

编程语言的异步在计算机中是如何实现的?

前言🔖


异步(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

  

总结🔖


异步在计算机底层的实现:

  1. 硬件中断 → 设备主动通知 CPU,不轮询、不等待
  2. 非阻塞 I/O → CPU 不卡等慢速设备,直接离开
  3. 事件队列 + 事件循环(Event Loop) → 管理任务与回调
  4. 回调函数 → 事件完成后执行的代码

一句话:异步 = CPU 不等待 I/O,靠中断 + 通知 + 回调回来继续执行。