# 忙等待

> 在软件工程中，忙碌等待（也称自旋；英语：Busy waiting、busy-looping、spinning）是一种以进程反复检查一个条件是否为真为根本的技术，条件可能为键盘输入或某个锁是否可用。忙碌等待也可以用来产生一个任意的时间延迟，若系统没有提供生成特定时间长度的方法，则需要用到忙碌等待。

- ID: m05811
- 分类: system
- 领域: 系统论

## 定义

进程在等待某个条件满足时，不挂起自己（释放CPU），而是通过无限循环不断地检查“好了吗？好了吗？”。这虽然响应快，但极度浪费资源。脚手架作用： 焦虑的空转。当你在等待结果（如面试通知）时，每隔一分钟刷一次手机就是“忙等待”。这消耗了大量精力却不产生价值。正确的做法是“中断驱动”（挂起自己去做别的事，等通知来了再响应）。

## 机制

Busy waiting（自旋等待）：线程在条件未满足时反复轮询检查而非让出 CPU，以极低延迟响应但空耗算力，是以 CPU 占用换取响应速度的经典权衡。

## 练习

1）仅在等待极短且上下文切换更贵时用；2）循环中用内存屏障/原子读保证可见性；3）配合 pause 指令降低功耗；4）长时间等待改用语义阻塞（条件变量/信号量）。

## 脚手架用法

焦虑的空转。当你在等待结果（如面试通知）时，每隔一分钟刷一次手机就是“忙等待”。这消耗了大量精力却不产生价值。正确的做法是“中断驱动”（挂起自己去做别的事，等通知来了再响应）。

[阅读网页](https://thinkingmodels.site/entries/detail/m05811)
