**阻塞 I/O 会让调用线程停下来直到操作完成;非阻塞 I/O 立即返回,让线程在操作完成期间去做别的工作。**同步 vs 异步在 API 层面描述的是同一个概念。
它是如何工作的
- 阻塞 / 同步:线程停在一次
read()上,直到数据到达。简单,但线程在整段时间里都空闲 —— 要服务 N 个慢客户端,你需要 N 个线程。 - 非阻塞 / 异步:调用立即返回;结果稍后通过回调、promise 或事件循环通知送达。一个线程就能同时处理数千个连接。
text
阻塞: ──[ 等待磁盘 ]── (线程卡住,什么也不做)
非阻塞: ──▶ 立即返回;就绪时事件循环收到通知
示例
js
data = fs.();
fs.(, { });
data2 = fs..();
