X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=philosophe-famine%2Fphilosophe.c;h=eb27f43c3a1c41f2e7e6eef78b6d2a7944e53e8f;hb=5bb90b8301bcac76c05099aeaf291ebda07adf00;hp=69e1fe8e7ca9bb8a648ce01849e88c2bd4dae1c8;hpb=fa1b4804896b3db52c1e9b614cd00162fcfb8754;p=TD_SE.git diff --git a/philosophe-famine/philosophe.c b/philosophe-famine/philosophe.c index 69e1fe8..eb27f43 100644 --- a/philosophe-famine/philosophe.c +++ b/philosophe-famine/philosophe.c @@ -4,7 +4,7 @@ #include #include -#define N 5 +#define N 10 // nombre de philosophes #define G (i + 1) % N // fourchette gauche du philosophe i @@ -14,12 +14,12 @@ #define penser 0 #define faim 1 #define manger 2 -static int phiState[N] = { penser }; +static int phiState[N]; sem_t mutex; sem_t semPhil[N]; -void test(int i) +static void test(int i) { if (phiState[i] == faim && phiState[G] != manger && phiState[D] != manger) { @@ -28,7 +28,7 @@ void test(int i) } } -void *philosophe(void *num) +static void *philosophe(void *num) { int i = *(int *)num, nb = 2; while (nb) { @@ -61,12 +61,15 @@ void *philosophe(void *num) int main() { - int i, NumPhi[N] = { 0, 1, 2, 3, 4 }; + int i, NumPhi[N]; + for (i = 0; i < N; i++) + NumPhi[i] = i; + for (i = 0; i < N; i++) + phiState[i] = penser; pthread_t th[N]; sem_init(&mutex, 0, 1); - for (int i = 0; i < N; i++) { + for (i = 0; i < N; i++) sem_init(&semPhil[i], 0, 1); - } // création des N philosophes for (i = 0; i < N; i++) pthread_create(&th[i], NULL, philosophe, &NumPhi[i]);