忙碌等待 在软件工程中忙碌等待也称自旋英語Busy waitingbusyloopingspinning是一种以进程反复检查一个条件是否为真为根本的技术条件可能为键盘输入或某个锁是否可用忙碌等待也可以用来产生一个任意的时间延迟若系统没有提供生成特定时间长度的方法则需要用到忙碌等待不同的计算机处理器速度差异很大特别是一些处理器设计为可能根据外部因素例如操作系统上的负载动态调整速率因此忙碌等待这种时间延迟技术容易产生不可预知甚至不一致的结果除非实现代码来确定处理器执行什么都不做循环的速度或者循环代码明确检查实时时钟 在某些情况下忙碌等待是有效的策略特别是实现自旋锁设计的操作系统上运行對稱多處理不過一般来说忙碌等待是应该避免的反模式处理器时间應該用来执行其他任务而不是浪费在无用的活动上 对于多核CPU忙碌等待的优点是不切换线程避免了由此付出的代价因此一些多线程同步机制不使用切换到内核态的同步对象而是以用户态的自旋锁或其衍生机制如轻型读写锁来做同步付出的时间复杂度相差个数量级忙碌等待可使用一些机制来降低CPU功耗如Windows系统中调用YieldProcessor实际上是调用了SIMD指令mmpause來源請求