【正确答案】
【答案解析】设置信号量:
readcount:=0,nwriter:=0,swriter:=1,mutex:=1,wrt:=1;
读者:P(swriter);
if(nwriter==0) {
P(mutex);
readcount:=readcount +1;
if(readcount==1)
P(wrt);
V(mutex);
V(swriter);
}
else {
V(swriter);
block();
}
reading;
P(mutex);
readcount:=readcount-1;
if(readcount==0)
V(wrt);
V(mutex);
写者:P(swriter);
nwriter:=nwriter+1;
P(wrt);
writing;
P(swriter);
nwriter:=nwriter-1;
if(nwriter==0) {
wakeup(读者进程);
V(swriter); }
else {
V(wrt);
V(swriter);
}