Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532568
  • 博文数量: 150
  • 博客积分: 5010
  • 博客等级: 大校
  • 技术积分: 1861
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-17 00:19
文章分类

全部博文(150)

文章存档

2011年(1)

2009年(14)

2008年(135)

我的朋友

分类: 项目管理

2008-04-05 21:27:21

读者写者问题
  有两组并发进程:
      读者和写者,共享一组数据区
   要求:
     允许多个读者同时执行读操作
     不允许读者、写者同时操作
     不允许多个写者同时操作\\


第一类读者写者问题的解法


读者:
       while (true) {
       P(mutex);
           readcount ++;
           if (readcount==1)
               P (w);
       V(mutex);
          读
       P(mutex);
           readcount --;
           if (readcount==0)
               V(w);
        V(mutex);
        };


写者:
      while (true) {

       P(w);
         写
       V(w);

        };




下面unresolved

3)第二类读者写者问题:
写者优先
条件:
1)多个读者可以同时进行读
2)写者必须互斥(只允许一个写者写,也不能读者写者同时进行)
3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者)

阅读(2879) | 评论(1) | 转发(1) |
0

上一篇:这是怎么设计的?

下一篇:管程

给主人留下些什么吧!~~

chinaunix网友2009-09-08 15:59:19

我试一下 reader: void reader() { while(true){ P(r); //阻止其它读者和写者 readcount++; if(readcount==1) P(w); V(r); read_data_base(); P(mutex); readcount--; if(readcount==0) V(w); V(mutex); use_data_read(); } } writer: void writer() { while(true){ P(r); //使读者只出不进 P(w); write_data_base(); V(w); V(r); } }