我正在研究一个问题,我应该实现一个哲学家哲学范式的例子。 注意:是的,这是一个家庭作业,在任何人问之前。C`signal`的参数太少
虽然我不是要求解决方案。我很困惑,因为我的老师在下面提供的这个Philosopher
函数在理论上应该工作。 wait
和signal
是C语言中用于OS系统调用的函数。
我一直在使用包括他们:
/* Wait and Signal */
#include <signal.h>
#include <sys/wait.h>
struct semaphore
{
int count = 1;
struct PCB *Sem_Queue ;
};
struct semaphore Forks[5];
Philosopher()
{
i = getPID() ;
while (1)
{
think();
wait (Forks[i]);
wait (Forks[(i+1) % 5]);
eat();
signal (Forks[i]);
signal (Forks[(i + 1) % 5]);
}
}
然而,在编译时出现错误:
Main.c:38:19: error: too few arguments to function call, expected 2, have 1
signal (Forks[i]);
哲学家需要用返回数据类型正确声明 –
您是否尝试阅读正在尝试使用的函数的手册?它在这样的大多数情况下都有帮助。 –
我尝试添加一个'void'类型的函数,但我仍然得到相同的错误。 – Nic