读者-写者问题:有两组并发进程:读者和写者,共享一个文件F,要求:
允许多个读者同时执行读操作;
只允许一个写者执行写操作;
任一写者在完成写操作前不允许其它读者或写者工作;
(4)写者执行写操作前,应让已有写者和读者全部退出。以下是采用信号量解决读者-写者问题的一种实现:
int readcount=0
semaphore writeblock,mutex; writeblock=1;
mutex=1;
cobegin//并发区域开始
//读者进程 //写者进程
process reader_i(){ process writer_j(){
P(mutex); P(writeblock);
readcount++; {写文件};
if(readcount==1) V(writeblock);
① ______ ; }
V(mutex);
{读文件};
P(mutex);
readcount--;
if(readcount==0) ②______
V(mutex);
coend//并发区域结束 请完成下列题目:
(1)补充①和②处的代码。(2分)
(2)信号量mutex的作用?(2分)
(3)假设有个写者正在写文件,此时相继来了两个读者试图读文件,请问这两个读者将分别阻塞在何处?(2分)
(4)分析该实现可能出现的写者饥饿现象。(2分)
查看答案和解析【26考研辅导课程推荐】:26考研集训课程,VIP领学计划,26考研VIP全科定制套餐(公共课VIP+专业课1对1) , 这些课程中都会配有内部讲义以及辅导书和资料,同时会有教研教辅双师模式对大家进行教学以及督学,并配有24小时答疑和模拟测试等,可直接咨询在线客服老师领取大额优惠券。
启航教育热门私房课
MORE小班面授 名额有限 抢先体验
编辑推荐
最新内容