busy loop(忙循环)是一种连续轮询事件的循环。 这种资源使用效率低下的替代方法是使用中断或休眠方法,直到事件发生。
忙循环虽然代价较高,但在某些情况下可以有效地使用。 你可以实现一个互斥体像这样,使用一个忙循环:
int lock(mutex *mutex) {
// Wait for the mutex to become free.
while(mutex->in_use);
mutex->in_use = 1;
return 0;
}
尽管它效率低下,忙循环也可以用来轮询硬件。 对于一些不支持中断的硬件来说,这有时是唯一的选择 (唉没办法)。