首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

关于操作系统的读写者有关问题,因为没找到理论的板块所以就发在这里了

2013-03-12 
关于操作系统的读写者问题,因为没找到理论的板块所以就发在这里了int readCount0//记录读者的数量semaph

关于操作系统的读写者问题,因为没找到理论的板块所以就发在这里了
int readCount=0;//记录读者的数量
semaphore r_w_w=1;//读者与写者和写者与写者的互斥信号灯变量
semaphore mutex=1;//读者对于readCount访问的互斥
reader()
{
   while(1)
   {
      <other actions>
      p(&mutex)
      readCount=readCount+1;
      if(readCount==1)
         p(&r_w_w);
      v(&mutex);
      <read operations>
      p(&mutex)
       readCount=readCount-1;
      if(readCount==0)
        V(&r_w_w);
      V(&mutex);
   }
}
writer()
{
  while(1)
  {
     <ohter action>
     p(&r_w_w)
     <werite opertion>
     v<&r_w_w>
  }
}
对于读者的第二个pv操作是否可以省略,我认为读的时候要互斥,但是离开的话不需要互斥,对吗?
[解决办法]
一般写的时候互斥吧。话说你怎么写那么底层的逻辑啊。
[解决办法]
我的理解 这是读者优先 如果 省去的话 在读的时候可能有人在改数据 最终结果 读了旧的数据 那就不正确了 所以必须有

热点排行