Des trucs marchent, d'autres pas
parent
ed687937a7
commit
2397312de1
|
@ -72,15 +72,17 @@ int main( int argc, char **argv)
|
||||||
V(mutex_tpa);
|
V(mutex_tpa);
|
||||||
|
|
||||||
|
|
||||||
|
// Création des fenêtres MARCHE
|
||||||
f_haut = creation_fenetre(LINES/NB_FENETRES,0,"F_HAUT") ;
|
f_haut = creation_fenetre(LINES/NB_FENETRES,0,"F_HAUT") ;
|
||||||
f_milieu1 = creation_fenetre(LINES/NB_FENETRES,LINES - 3 * (LINES/NB_FENETRES),"F_MILIEU1") ;
|
f_milieu1 = creation_fenetre(LINES/NB_FENETRES,LINES - 3 * (LINES/NB_FENETRES),"F_MILIEU1") ;
|
||||||
f_milieu2 = creation_fenetre(LINES/NB_FENETRES,LINES - 2 * (LINES/NB_FENETRES),"F_MILIEU2") ;
|
f_milieu2 = creation_fenetre(LINES/NB_FENETRES,LINES - 2 * (LINES/NB_FENETRES),"F_MILIEU2") ;
|
||||||
f_bas = creation_fenetre(LINES/NB_FENETRES, LINES - (LINES/NB_FENETRES),"F_BAS") ;
|
f_bas = creation_fenetre(LINES/NB_FENETRES, LINES - (LINES/NB_FENETRES),"F_BAS") ;
|
||||||
|
|
||||||
sleep(5);
|
sleep(5);
|
||||||
// aDesProd => est-ce qu'il y a des producteur (sinon on quitte)
|
// aDesProd => est-ce qu'il y a des producteur (si 0 on quitte)
|
||||||
// si = 0 alors on continue
|
|
||||||
int aDesProd;
|
int aDesProd;
|
||||||
|
|
||||||
|
// numTete est un entier qui détermine la "tête" courante. Si elle a changé, c'est qu'on a ajouté un caractère
|
||||||
int numTete = 0;
|
int numTete = 0;
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
|
@ -90,14 +92,17 @@ int main( int argc, char **argv)
|
||||||
if(numTete != memoireP->tete)
|
if(numTete != memoireP->tete)
|
||||||
{
|
{
|
||||||
numTete = memoireP->tete;
|
numTete = memoireP->tete;
|
||||||
c = memoireP->f[numTete].c;
|
c = (char) memoireP->f[numTete].c;
|
||||||
switch(memoireP->f[numTete].idp)
|
switch(memoireP->f[numTete].idp)
|
||||||
{
|
{
|
||||||
case 0 : w = f_haut;
|
case 0 :
|
||||||
|
w = f_haut;
|
||||||
break;
|
break;
|
||||||
case 1 : w = f_milieu1;
|
case 1 :
|
||||||
|
w = f_milieu1;
|
||||||
break;
|
break;
|
||||||
case 2 : w = f_milieu2;
|
case 2 :
|
||||||
|
w = f_milieu2;
|
||||||
break;
|
break;
|
||||||
default :
|
default :
|
||||||
w = f_bas;
|
w = f_bas;
|
||||||
|
@ -106,7 +111,8 @@ int main( int argc, char **argv)
|
||||||
wrefresh(w) ;
|
wrefresh(w) ;
|
||||||
}
|
}
|
||||||
V(mutex_data);
|
V(mutex_data);
|
||||||
// On vérifie qu'il y ait toujours des producteurs
|
|
||||||
|
// On vérifie qu'il y ait toujours des producteurs MARCHE
|
||||||
for(i = 0 ; i < MAX_PROD && aDesProd == 0 ; i++ )
|
for(i = 0 ; i < MAX_PROD && aDesProd == 0 ; i++ )
|
||||||
if(memoireP->tpa[i] != -1)
|
if(memoireP->tpa[i] != -1)
|
||||||
aDesProd = 1;
|
aDesProd = 1;
|
||||||
|
@ -124,7 +130,7 @@ int main( int argc, char **argv)
|
||||||
endwin() ;
|
endwin() ;
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
sleep(1); // Ralentissement volontaire du programme
|
usleep(10); // Ralentissement volontaire du programme
|
||||||
}
|
}
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,7 @@ int main( int argc, char **argv)
|
||||||
memoireP->f[memoireP->tete].idp = i;
|
memoireP->f[memoireP->tete].idp = i;
|
||||||
memoireP->tete = memoireP->tete +1;
|
memoireP->tete = memoireP->tete +1;
|
||||||
}
|
}
|
||||||
|
fprintf(stdout, "Voici le caractère écrit : %c\n", memoireP->f[memoireP->tete].c);
|
||||||
V(mutex_data);
|
V(mutex_data);
|
||||||
}
|
}
|
||||||
// On a fini, on remet la valeur de l'indice du processus à -1 dans le tableau des producteurs
|
// On a fini, on remet la valeur de l'indice du processus à -1 dans le tableau des producteurs
|
||||||
|
|
Loading…
Reference in New Issue