我正在研究一個問題,我應該實現一個哲學家哲學範式的例子。 注意:是的,這是一個家庭作業,在任何人問之前。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