关于读者写者的问题

gsj5555 免费考研论坛/2008-10-12

原文内容来自免费考研论坛,请点击查看全文
http://bbs.freekaoyan.com/viewthread.php?tid=324685
readcount 表示读进程计数
设置信号量:mutex是用于对计数器readcount操作的互斥信号量,writeblock表示是否允许写的信号量
int readcount=0;
semaphore writeblock, mutex ;
writeblock =1; mutex=1;
reader {

p( mutex );
readcount ;
if ( readcount==1)

p ( writeblock );
v ( mutex );
{读文件};

p ( mutex ); readcount--;
if ( readcount==0)
v ( writeblock );
v(mutex);

}

各位大侠请问:1。为什么要对readcount设置互斥信号量,readcount是用于计数的,难道也属于临界资源吗?

2。在进入读文件前为什么还要执行一次 v ( mutex )操作?,而后面又执行一个 p ( mutex ),都是什么意义?
如果 去掉这个V,P有什么影响吗?(红色部分)
---------------------------------
兄弟,那是对Readcount 进行互斥访问的,怎么叫读之前要V呢,那是和前面的P成对的好不好,,这个算法是基础
---------------------------------
还有那个计数器肯定是临界资源咯,如果不是的话,同时有多个读进程读的 话,那如果都修改的话,那不就出乱子了吗。。。。。
---------------------------------
临界资源不是“{读文件}”吗?
---------------------------------
全局变量都要保护,不然改改就乱了。

在进入读文件前为什么还要执行一次 v ( mutex )操作 ? 可以允许两个进程一起读, 不 v 的话, 就是串行读, 设个计数器就没用了。

而后面又执行一个 p ( mutex ),都是什么意义? 应为要去修改计数器, 防止别的进程也去改~~

相关话题/

  • 领限时大额优惠券,享本站正版考研考试资料!
    大额优惠券
    优惠券领取后72小时内有效,10万种最新考研考试考证类电子打印资料任你选。涵盖全国500余所院校考研专业课、200多种职业资格考试、1100多种经典教材,产品类型包含电子书、题库、全套资料以及视频,无论您是考研复习、考证刷题,还是考前冲刺等,不同类型的产品可满足您学习上的不同需求。 ...
    本站小编 Free壹佰分学习网 2022-09-19