1
我对读者/作者信号量解决方案的失败感兴趣,作者优先考虑。如何在读者作者解决方案中导致作者优先权失败?
在下面的代码,从维基百科:
READER
P(mutex_3);
P(r);
P(mutex_1);
readcount := readcount + 1;
if readcount = 1 then P(w);
V(mutex_1);
V(r);
V(mutex_3);
reading is performed
P(mutex_1);
readcount := readcount - 1;
if readcount = 0 then V(w);
V(mutex_1);
...有一个二进制信号mutex_3
,这限制线程试图去r
信号接入的数量,从而使作家有优先权。
我试图删除该互斥体,期待作家饿死,但没有成功。 我用Java编写了一个程序,线程等待两个固定的时间:读写之后和读写期间。我创建了一个编写器进程和8个读取器进程,并为所有人设置等待时间为1毫秒。我试图创造一种情况,其中r
信号正在不断受到一位作家和许多读者的攻击。这些都没有引起我期望的失败。
我做错了什么?我怎样才能导致作家饥饿?
您正在做这件事的任何特殊原因?它破坏了读写器锁的整个点。 –