1
我對讀者/作者信號量解決方案的失敗感興趣,作者優先考慮。如何在讀者作者解決方案中導致作者優先權失敗?
在下面的代碼,從維基百科:
READER
P(mutex_3);
P(r);
P(mutex_1);
readcount := readcount + 1;
if readcount = 1 then P(w);
V(mutex_1);
V(r);
V(mutex_3);
reading is performed
P(mutex_1);
readcount := readcount - 1;
if readcount = 0 then V(w);
V(mutex_1);
...有一個二進制信號mutex_3
,這限制線程試圖去r
信號接入的數量,從而使作家有優先權。
我試圖刪除該互斥體,期待作家餓死,但沒有成功。 我用Java編寫了一個程序,線程等待兩個固定的時間:讀寫之後和讀寫期間。我創建了一個編寫器進程和8個讀取器進程,併爲所有人設置等待時間爲1毫秒。我試圖創造一種情況,其中r
信號正在不斷受到一位作家和許多讀者的攻擊。這些都沒有引起我期望的失敗。
我做錯了什麼?我怎樣才能導致作家飢餓?
您正在做這件事的任何特殊原因?它破壞了讀寫器鎖的整個點。 –