do {
turn = j; // = (1-i)
while(turn==j);
//critical section
turn = j; //exit section.
} while(true);
彼得森的算法可以只处理转弯变量吗?为什么需要标志变量?
显然是的。使用此方法时,不满足进度条件。显然,当且仅当其他人将turn
变量更改为自己的 id(例如i
(时,这里的进程j
将继续前进(即在 while();
时摆脱繁忙的等待(。
因此,很明显,过程j
的进展掌握在过程"i"手中。
例如。假设另一个进程在关键部分上方的非关键部分区域中繁忙。或者也许另一个进程被杀死/死锁等。然后这个糟糕的过程j
永远等待。