Busy loop

来自osdev
Zhang3讨论 | 贡献2022年1月24日 (一) 05:49的版本 (创建页面,内容为“== 定义 == busy loop(忙循环)是一种连续轮询事件的循环。 这种资源使用效率低下的替代方法是使用中断或休眠方法,直到事件发生。 == 用例 == 忙循环虽然代价较高,但在某些情况下可以有效地使用。 你可以实现一个互斥体像这样,使用一个忙循环: <source lang=c> int lock(mutex *mutex) { // Wait for the mutex to become free. while(mutex->in_use); mutex->in_use = 1; r…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

定义

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

用例

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

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

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