while (1) {
while (TestAndSet(&lock)); /* busy wait */
/* critical section */
lock = false;
/* non-critical section */
}
上面的代码片段是如何完全受到有限等待问题的影响,即某些进程可能必须无限期地等待进入其关键部分?我不清楚为什么彼得森的解决方案不会遇到同样的问题?任何人都可以解释一下。
答案 0 :(得分:0)
turn
变量,它确保转弯分布在竞争处理器上。检查和设置没有这种效果,并且可以允许单个处理器占用锁定而排除所有其他处理器。