自旋直到获得锁
spin until lock is acquired
我正在阅读一些 material 来自 Wiki 的测试和设置说明(https://en.wikipedia.org/wiki/Test-and-set)
我的理解是大多数CPU支持一个特殊的指令"test and set"来实现互斥。但是我不明白它谈论的是 CPU 旋转以获取锁。这可以在单核系统上实现吗?如果是,那么旋转获取锁对我来说没有意义。或者我可能错过了测试和设置指令只能在多个核心系统上使用的地方?
boolean lock = false
function Critical(){
while TestAndSet(lock)
skip // **spin until lock is acquired**
critical section // only one process can be in this section at a time
lock = false // release lock when finished with the critical section
}
提前感谢您的反馈。
在抢占式多线程系统上,允许其他进程 运行 在 TestAndSet==false 和 skip 之间以及在 skip 和 TestAndSet 之间。所以它也适用于单核系统。
我正在阅读一些 material 来自 Wiki 的测试和设置说明(https://en.wikipedia.org/wiki/Test-and-set)
我的理解是大多数CPU支持一个特殊的指令"test and set"来实现互斥。但是我不明白它谈论的是 CPU 旋转以获取锁。这可以在单核系统上实现吗?如果是,那么旋转获取锁对我来说没有意义。或者我可能错过了测试和设置指令只能在多个核心系统上使用的地方?
boolean lock = false
function Critical(){
while TestAndSet(lock)
skip // **spin until lock is acquired**
critical section // only one process can be in this section at a time
lock = false // release lock when finished with the critical section
}
提前感谢您的反馈。
在抢占式多线程系统上,允许其他进程 运行 在 TestAndSet==false 和 skip 之间以及在 skip 和 TestAndSet 之间。所以它也适用于单核系统。