3
我很難理解爲什麼第一個讀者 - 作者問題會使寫入過程陷於捱餓,即:代碼如何爲讀者過程提供優先權?當其中一個閱讀器進程執行signal(wrt)
時,作者進程是否無法獲得鎖定?信息量列表是否是結構化的(正如我可以看到作者將如何在LIFO列表中以穩定的閱讀器流程飢餓),從而優先考慮讀者進程,還是我誤解了一些基本的東西?讀者 - 作者同步問題
semaphore wrt=1,mutex=1;
readcount=0;
writer()
{
wait(wrt);
//writing is done
signal(wrt);
}
reader()
{
wait(mutex);
readcount++;
if(readcount==1)
wait(wrt);
signal(mutex);
///Do the Reading
///(Critical Section Area)
wait(mutex);
readcount--;
if(readcount==0)
signal(wrt);
signal(mutex);
}
完美,我錯過了,感謝您解釋它! – mino 2013-04-10 17:33:35