我一直在尋找有關Peterson's algorithm的信息,但曾經遇到過有關它不滿足飢餓但只有僵局的參考文獻。這是真的?如果有的話可以有人詳細說明爲什麼它不?彼得森的算法是否滿足飢餓?
Peterson算法:
flag[0] = 0;
flag[1] = 0;
turn;
P0: flag[0] = 1;
turn = 1;
while (flag[1] == 1 && turn == 1)
{
// busy wait
}
// critical section
...
// end of critical section
flag[0] = 0;
P1: flag[1] = 1;
turn = 0;
while (flag[0] == 1 && turn == 0)
{
// busy wait
}
// critical section
...
// end of critical section
flag[1] = 0;
該算法使用兩個變量,標誌和轉動。標誌值爲1表示進程想要進入臨界區。變量turn保存了輪到它的進程的ID。如果P1不想進入其臨界區,或者如果P1通過將其設置爲0而賦予P0優先級,則進入臨界區的進入P0。
如果您提出問題,請爲那些不熟悉您所談論主題的人提供更多背景。它是什麼樣的算法?它能做什麼?你確切的問題是什麼?如果你這樣做,社區將非常感激。 – 2010-10-27 13:29:12