当前位置: 代码迷 >> VC >> 关于操作系统的读写者有关问题,因为没找到理论的板块所以就发在这里了
  详细解决方案

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

热度:524   发布时间:2016-05-05 00:14:31.0
关于操作系统的读写者问题,因为没找到理论的板块所以就发在这里了
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操作是否可以省略,我认为读的时候要互斥,但是离开的话不需要互斥,对吗?

------解决方案--------------------
一般写的时候互斥吧。话说你怎么写那么底层的逻辑啊。
------解决方案--------------------
我的理解 这是读者优先 如果 省去的话 在读的时候可能有人在改数据 最终结果 读了旧的数据 那就不正确了 所以必须有
  相关解决方案