回 帖 发 新 帖 刷新版面

主题:操作系统里的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]

回复列表 (共2个回复)

沙发

恩,的确没看出有什么问题.

板凳

那样的话,假如同时有多个读者readcount不是被乱修改了吗?

我来回复

您尚未登录,请登录后再回复。点此登录或注册