彼得森的单变量解决方案


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

彼得森的算法可以只处理转弯变量吗?为什么需要标志变量?

显然是的。使用此方法时,不满足进度条件。显然,当且仅当其他人将turn变量更改为自己的 id(例如i(时,这里的进程j将继续前进(即在 while(); 时摆脱繁忙的等待(。

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

例如。假设另一个进程在关键部分上方的非关键部分区域中繁忙。或者也许另一个进程被杀死/死锁等。然后这个糟糕的过程j永远等待。

相关内容

最新更新