Ich arbeite an einem Problem, bei dem ich ein Beispiel für das Ess-Philosoph-Paradigma implementieren soll. Hinweis: Ja das ist eine Hausaufgabe, bevor jemand fragt.C `signal` hat zu wenige Argumente
Ich bitte nicht um eine Lösung. Ich bin verwirrt, weil diese Philosopher
Funktion, die unten von meinem Lehrer geliefert wurde, theoretisch funktionieren soll. wait
und signal
sind die in C für OS-Systemaufrufe verwendeten Funktionen.
Ich habe sie mit eingeschlossen:
/* 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]);
}
}
Allerdings, wenn ich den Fehler kompiliert:
Main.c:38:19: error: too few arguments to function call, expected 2, have 1
signal (Forks[i]);
Philosoph muss korrekt deklariert werden mit Rückgabedatentyp –
Haben Sie versucht, das Handbuch für die Funktionen zu lesen, die Sie verwenden möchten? Es hilft in den meisten Fällen wie diesem. –
Ich habe versucht, einen "void" -Typ zu der Funktion hinzuzufügen, aber ich bekomme immer noch die gleichen Fehler. – Nic