我很難理解第二種算法對讀者寫者問題。我理解一般概念,作家將優先於讀者(讀者可能會餓死)。我甚至可以理解這種算法的條件變量實現Reader/Writer Locks in C++。然而,信號量&互斥體的實現對我來說沒有任何意義。這是維基百科的例子:第二種算法解決讀寫器問題
int readcount, writecount; (initial value = 0)
semaphore mutex 1, mutex 2, mutex 3, w, r ; (initial value = 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 done
P(mutex 1);
readcount := readcount - 1;
if readcount = 0 then V(w);
V(mutex 1);
WRITER
P(mutex 2);
writecount := writecount + 1;
if writecount = 1 then P(r);
V(mutex 2);
P(w);
writing is performed
V(w);
P(mutex 2);
writecount := writecount - 1;
if writecount = 0 then V(r);
V(mutex 2);
[http://en.wikipedia.org/wiki/Readers-writers_problem][2]
我不明白這三個信號量(互斥3,R和互斥1)是在讀鎖。是不是一個足夠的信號量的計數?
請您發佈一個鏈接到算法或維基百科頁面,以確保我們都在看同一件事? – gbulmer 2012-04-02 10:06:06