主题:操作系统里的pv操作问题,请教...
关于操作系统pv操作的经典读写问题,有如下解决方法:
Reader:begin
repeat
P(rmutex);
if(readcount==0) then P(wmutex);
readcount = readcount + 1;
V(rmutex);
perform read operation;
P(rmutex);
readcount = readcount - 1;
if(readcount==0) then V(wmutex);
V(rmutex);
end
Writer:begin
repeat
P(wmutex);
perform write operation;
V(wmutex);
end
其中,rmutex和wmutex初值都为1,readcount初值为0;
上面的pv操作并没有问题,但个人认为Reader中的关于rmutex的pv操作都可以删去,尽管
readcount是临界资源。因为删去后我发现Reader和Writer还是会互不干扰地执行,也不会
出现死锁。但上面的写法是课本上的,个人并不确定我的唐突修改是不是没有问题,所以
还请高手帮忙看下咯....
[em18]
Reader:begin
repeat
P(rmutex);
if(readcount==0) then P(wmutex);
readcount = readcount + 1;
V(rmutex);
perform read operation;
P(rmutex);
readcount = readcount - 1;
if(readcount==0) then V(wmutex);
V(rmutex);
end
Writer:begin
repeat
P(wmutex);
perform write operation;
V(wmutex);
end
其中,rmutex和wmutex初值都为1,readcount初值为0;
上面的pv操作并没有问题,但个人认为Reader中的关于rmutex的pv操作都可以删去,尽管
readcount是临界资源。因为删去后我发现Reader和Writer还是会互不干扰地执行,也不会
出现死锁。但上面的写法是课本上的,个人并不确定我的唐突修改是不是没有问题,所以
还请高手帮忙看下咯....
[em18]