我无法理解为什么第一个读写器问题会使写入进程饿死,即:代码如何为读取器进程提供优先级?当其中一个读取器进程执行时,写入器进程是否应该无法获得锁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);
}