原文内容来自免费考研论坛,请点击查看全文
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 ),都是什么意义? 应为要去修改计数器, 防止别的进程也去改~~
关于读者写者的问题
gsj5555 免费考研论坛/2008-10-12
相关话题/
领限时大额优惠券,享本站正版考研考试资料!
优惠券领取后72小时内有效,10万种最新考研考试考证类电子打印资料任你选。涵盖全国500余所院校考研专业课、200多种职业资格考试、1100多种经典教材,产品类型包含电子书、题库、全套资料以及视频,无论您是考研复习、考证刷题,还是考前冲刺等,不同类型的产品可满足您学习上的不同需求。 ...考试优惠券 本站小编 Free壹佰分学习网 2022-09-19
Free考研考试FreeKaoYan.Com
欢迎来到Free考研考试,"为实现人生的Free而奋斗"
© 2020 FreeKaoYan! . All rights reserved.