while(true){         
  p(rmutex);
  if readcount=0 then
    p(wmutex);             
    readcount:=readcount+1; 
    v(rmutex);             
    读文件;
      …
    p(rmutex);
    readcount:=readcount-1;
if readcount=0 then
v(wmutex);
v(rmutex);
          }
if readcount=0 then
应该是c里的
if(readcount==0)
{
    ;
}
那这个呢?readcount:=readcount-1; 

解决方案 »

  1.   

    这是读者写者问题,
    看下操作系统进程同步,会好点,readcount:=readcount-1; //readcount是记录读者人数的量,一个读者读完后不是要这个量减一嘛,,
      

  2.   


    //这是读写问题的伪码while(true){        
      p(rmutex); //申请读,对rmutex互斥,没写者则成功,有写者则挂起
      if readcount=0 then //读申请成功,如果是第一个读者,则挂起写者
        p(wmutex);            
        readcount:=readcount+1; //读者人数加一
        v(rmutex);            //释放rmutex
        读文件; 
          … 
        p(rmutex);             //同上面(只是减一)
        readcount:=readcount-1; 
    if readcount=0 then     //如果没有读者了,则释放wmutex
    v(wmutex); 
    v(rmutex); 
              } 
      

  3.   

    谢谢楼上的兄弟。再请问一下。。if  then  then 后面的句子如果没有打括号的话。就是执行then后面的第一个分号前的语句是吗?问完这个马上结贴