我首先要说这是一个家庭作业,但它与我学习C无关。 我们的任务是使用信号量和优先级实现Reader / Writer冲突的解决方案。在Java中为类完成。
我们正在使用的这本书使用C(我认为)来处理他们的代码示例。我对标准C并不熟悉,我无法弄清楚如何搜索现有文献以寻找我所寻求的答案。
在代码中:
semaphore x=1,wsem=1;
int readcount;
void reader()
{
While (true){
semWait(x);
readCount++;
if(readcount==1)
{
semWait(wsem);
}
semSignal(x);
READUNIT();
semWait(x);
readcount; /* <--- the questionable command */
if(readcount==0)
{
semSignal(wsem)
}
semSignal(x);
}
}
我已经“加星标”的这条线没有任何明显的意义。我似乎只是在说明或声明变量的名称。这是我从未见过的某种形式的减量,还是这样做呢?看起来我可以在某个C-guide中找到它,但我不知道它在做什么,所以我真的不知道如何询问它正在做什么。
答案 0 :(得分:2)
变量名后跟分号是C中的完整法律声明,但它什么都不做。尽管在某些编译器中抑制未使用变量警告可能很有用,但很少使用该表单。
从上下文来看,它应该是readcount--;
。这是C减量运算符,撤消上面的readcount++
。
您的来源是否也有(错误的)大写字母W While
且readcount
的拼写不一致?如果是这样,在一个简短的例子中就是几个不好的拼写错误,你应该怀疑书中的其他一切。