repositories
/
TD_SE.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Lecteurs/rédacteurs course code.
[TD_SE.git]
/
philosophe-famine
/
philosophe.c
diff --git
a/philosophe-famine/philosophe.c
b/philosophe-famine/philosophe.c
index 95384c98f73eb83097a4cffcff99e520b96f8033..eb27f43c3a1c41f2e7e6eef78b6d2a7944e53e8f 100644
(file)
--- a/
philosophe-famine/philosophe.c
+++ b/
philosophe-famine/philosophe.c
@@
-4,7
+4,7
@@
#include <pthread.h>
#include <semaphore.h>
#include <pthread.h>
#include <semaphore.h>
-#define N
5
+#define N
10
// nombre de philosophes
#define G (i + 1) % N
// fourchette gauche du philosophe i
// 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
#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];
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) {
{
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) {
{
int i = *(int *)num, nb = 2;
while (nb) {
@@
-61,12
+61,15
@@
void *philosophe(void *num)
int main()
{
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);
pthread_t th[N];
sem_init(&mutex, 0, 1);
- for (i = 0; i < N; i++)
{
+ for (i = 0; i < N; i++)
sem_init(&semPhil[i], 0, 1);
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]);
// création des N philosophes
for (i = 0; i < N; i++)
pthread_create(&th[i], NULL, philosophe, &NumPhi[i]);