【问题标题】:What will happen if you modify the reader process in reader-writer problem?如果在读写器问题中修改读取器进程会发生什么?
【发布时间】:2019-12-02 18:26:46
【问题描述】:

这是阅读器进程的代码(可行的代码)

reader(){
while(true){
P(mutex);
readerCounter++;
     if((readerCount == 1)
     P(OKtoaccessDB);
V(mutex);
accessDB;
readerCounter--;
if(readerCounter == 0)
     V(OKtoaccessDB);
V(mutex);
}
}

这是作家的过程;

writer(){
while(true){
    P(OKtoacessDB);
    accessDB;
    V(OKtoacessDB);
   }
}

如果替换(在阅读器中)会有什么结果

发件人:

if(readerCounter == 0)
     V(OKtoacessDB);
     V(mutex);

到:

if(readerCounter == 0){
     V(OKtoaccessDB);
     V(mutex);
}

谢谢!

【问题讨论】:

    标签: synchronization thread-synchronization readerwriterlock


    【解决方案1】:

    V(互斥体); 互斥锁被锁定以独占访问 readerCounter。如果您像这样更改代码:

    if(readerCounter == 0){
         V(OKtoaccessDB);
         V(mutex);
    }
    

    只有当 readerCounter 为零时才释放互斥锁。在所有其他情况下,阅读器将退出而不解锁互斥锁。这实质上意味着当 readerCounter 不为零时退出读取调用的第一个读取器将在不解锁互斥锁的情况下消失。这将阻止所有后续阅读器继续前进。

    【讨论】:

      猜你喜欢
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多