彼得森的单变量解决方案

时间:2018-01-16 19:07:29

标签: multithreading concurrency operating-system critical-section

do {
    turn = j;   // = (1-i)
    while(turn==j);
    //critical section 
    turn = j; //exit section. 
} while(true);

peterson的算法可以只使用转弯变量。为什么需要标志变量?

1 个答案:

答案 0 :(得分:0)

显然是的。使用此方法,不满足进度条件。 显然,当且仅当其他人将j变量更改为其自己的id时(例如{{1}),此过程while();将向前移动(即从turn退出忙碌)。 }})。

因此很明显,流程i的进展掌握在流程的手中。

例如。假设其他过程在临界区上方的非关键区域中忙碌。或者也许其他进程被杀死/死锁等等。然后这个糟糕的进程j会一直等待。