Busy loop

来自osdev
跳到导航 跳到搜索

定义

busy loop(忙循环)是一种连续轮询事件的循环。 这种资源使用效率低下的替代方法是使用中断或休眠方法,直到事件发生。

用例

忙循环虽然代价较高,但在某些情况下可以有效地使用。 你可以实现一个互斥体像这样,使用一个忙循环:

int lock(mutex *mutex) {
    // Wait for the mutex to become free.
    while(mutex->in_use);
    mutex->in_use = 1;
    return 0;
}

尽管它效率低下,忙循环也可以用来轮询硬件。 对于一些不支持中断的硬件来说,这有时是唯一的选择 (唉没办法)。