Busy loop
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;
}
尽管它效率低下,忙循环也可以用来轮询硬件。 对于一些不支持中断的硬件来说,这有时是唯一的选择 (唉没办法)。