1
我試圖在Java中實現下面的僞解決方案作爲一項任務的一部分。該僞代碼是針對讀者偏好程序,具體是讀者程序本身。有一個陪同的作家過程,但爲了保持簡潔,我沒有打擾它的粘貼。讀者與作者Java解決方案查詢(條件信號|通過接力棒)
Process Reader[i=1 to M] {
while (true) {
/* Implementing <await (nw == 0) nr = nr+1;> */
P(e);
if (nw > 0) {dr = dr+1; V(e); P(r);}
nr = nr + 1;
if (dr > 0) {dr = dr-1; V(r);}
else V(e);
read the database;
/* Implementing <nr = nr-1;> */
P(e);
nr = nr - 1;
if (nr == 0 and dw > 0) {dw = dw-1; V(w);}
else V(e);
}
}
本來我以爲行:
/* Implementing <await (nw == 0) nr = nr+1;> */
是某種評論什麼正在發生,但其只是重新閱讀它,我認爲它應該是一個if語句到控制P(e)鎖定信號量。以下是我基於上述假設在我的代碼中實現的內容。
if (nw == 0) {
nr = nr++;
try {
e.acquire();//P(e)
} catch (InterruptedException e) {
}
}//end if
從其他代碼的輸出已經有點亂,但它似乎工作。爲了使輸出到控制檯更具可讀性,我使用了延遲,儘管我對使用延遲很擔心,因爲這似乎很可能干擾結果,因爲我正在給作者進程更長的延遲。理論上說,鎖定系統應該是健全的,而延遲應該使輸出到控制檯更具可讀性。
那麼,我是否正確使用if語句以上?
你能給我任何提示上輸出數據到控制檯,以證明它的作品,因爲它應該(讀者偏好/作家偏好)