do {
choosing[i] = true;
number[i] = max(number[0], number[1], …, number [n – 1])+1;
choosing[i] = false;
for (j = 0; j < n; j++) {
while (choosing[j]); // espera que j obtenha um bilhete
while ((number[j]!= 0) && (number[j],j)<(number[i],i)));
}
critical section
number[i] = 0;
remainder section
} while (1);
我對這種算法有疑問,據推測當你的數字爲零時,你將無法進入臨界區。Lamport的麪包店算法
但循環的工作方式,如果循環內條件爲真,你會卡在所述循環。
含義非零數字將是沒有達到臨界條件的權利?
這有點混淆了我,我會感激你的幫助
Greetins約翰。
歡迎來到SO。請嘗試使用更好的縮進格式化您的代碼以使其更具可讀性,從而使人們更傾向於幫助您。 – mc110