do {
turn = j; // = (1-i)
while(turn==j);
//critical section
turn = j; //exit section.
} while(true);
peterson的算法可以只使用转弯变量。为什么需要标志变量?
答案 0 :(得分:0)
j
变量更改为其自己的id时(例如{{1}),此过程while();
将向前移动(即从turn
退出忙碌)。 }})。
因此很明显,流程i
的进展掌握在流程的手中。
例如。假设其他过程在临界区上方的非关键区域中忙碌。或者也许其他进程被杀死/死锁等等。然后这个糟糕的进程j
会一直等待。