Operating system 旋转直到获得锁

Operating system 旋转直到获得锁,operating-system,synchronization,mutex,Operating System,Synchronization,Mutex,我正在读一些关于测试的材料,并从Wiki()设置说明 据我所知,大多数CPU都支持特殊指令“测试和设置”,以实现互斥。然而,我不明白的是,它谈论的是CPU旋转以获取锁。这可以在单核系统上实现吗。如果是,那么旋转获取锁对我来说没有意义。或者我可能错过了测试ans集合指令仅在多个核心系统上可用的点 boolean lock = false function Critical(){ while TestAndSet(lock) skip // **spin until lock

我正在读一些关于测试的材料,并从Wiki()设置说明

据我所知,大多数CPU都支持特殊指令“测试和设置”,以实现互斥。然而,我不明白的是,它谈论的是CPU旋转以获取锁。这可以在单核系统上实现吗。如果是,那么旋转获取锁对我来说没有意义。或者我可能错过了测试ans集合指令仅在多个核心系统上可用的点

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之间运行其他进程。所以它也适用于单核系统。

谢谢D.R。但是这不意味着它不再是原子的了吗?不,重要的是
TestAndSet
操作是原子的,而不是整个while循环是原子的。我明白了。再次感谢。它很管用,但效果很差。如果呼叫者的优先级很高,它可以有效地将整个盒子包围起来。