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操作是否可以省略,我认为读的时候要互斥,但是离开的话不需要互斥,对吗?
------解决方案--------------------
一般写的时候互斥吧。话说你怎么写那么底层的逻辑啊。
------解决方案--------------------
我的理解 这是读者优先 如果 省去的话 在读的时候可能有人在改数据 最终结果 读了旧的数据 那就不正确了 所以必须有