【发布时间】:2012-07-22 18:38:22
【问题描述】:
我已经阅读这篇文章很长一段时间了,但对我来说没有意义。可能是因为我对这一切都很陌生,仍然不了解一些内核概念。
这就是我想出的(没有错误或 NULL 处理,只是为了这个问题):
内核自旋锁在内核线程中执行,是抢占式的。
void spinlock_acquire(spinlock_t *spinlock)
{
tryagain:
while(spinlock->plock != UNLOCKED) ;
context_switch_block;
if(spinlock->plock != UNLOCKED) {
context_switch_unblock;
goto tryagain;
}
spinlock_lock(spinlock, current_thread);
context_switch_unblock;
}
【问题讨论】:
-
我不明白这个问题。或者至少我不明白您包含的代码与问题有何关系。
-
单个 CPU 上的自旋锁,代码有什么问题?我读过在单 CPU 上的 Linux 中,自旋锁代码相当于没有操作,但为什么呢?
-
完全看不懂你的代码......