读写器问题中的信号量连续等待呼叫

我有一个实现读写器问题的方法,只是做了一点改动,如下所示:

rw_mutex = semaphore(1); 
mutex = semaphore(1); 
int read_count = 0; 

// ---- WRITERS ----- 
do { 
   rw_mutex.wait(); 

   /* Writing is performed */ 

   rw_mutext.signal(); 
} while(ture); 

// ---- READERS ----- 
do { 
   mutex.wait(); 
   read_count++; 
   mutex.signal(); 
   if(read_count == 1){ 
   rw_mutex.wait(); 
   } 
   //mutex.signal();

   /* Reading is performed */ 

   mutex.wait(); 
   read_count--; 
   if(read_count == 0) 
   rw_mutex.signal(); 
   mutex.signal();
   } while(true);

我认为,“作家”部分没有任何问题。但是在“读取器”部分中,在执行读取之前,在read_count检查条件之前会发出互斥信号量。

可能会出现什么问题?互斥,进度和有限等待条件如何?哪些条件不能满足?

iCMS 回答:读写器问题中的信号量连续等待呼叫

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2284118.html

大家都在问