test_and_set中的有限等待问题

时间:2014-05-10 21:32:42

标签: synchronization atomic

while (1) {
      while (TestAndSet(&lock));  /* busy wait */

        /* critical section */

      lock = false;

        /* non-critical section */
    }

上面的代码片段是如何完全受到有限等待问题的影响,即某些进程可能必须无限期地等待进入其关键部分?我不清楚为什么彼得森的解决方案不会遇到同样的问题?任何人都可以解释一下。

1 个答案:

答案 0 :(得分:0)

彼得森的算法保证了进步 - 通过旋转turn变量,它确保转弯分布在竞争处理器上。检查和设置没有这种效果,并且可以允许单个处理器占用锁定而排除所有其他处理器。