这是两个过程的解决方案算法1:
turn = 0;
i = 0, j = 1;
do
{
while (turn != i) ; //if not i's turn , wait indefinitely
// critical section
turn = j; //after i leaves critical section, lets j in
//remainder section
} while (1); //loop again
我明白互斥是满足的。因为当 P0 在临界区时,P1 一直等到它离开临界区。并且在 P0 更新轮换后,P1 进入临界区。我不明白为什么这个算法的进度不满意。
进度是如果没有进程在临界区等待进程应该能够进入临界区而无需等待。
P0 在离开临界区后更新,所以在 while 循环中等待的 P1 应该能够进入临界区。你能告诉我为什么没有进展吗?