Onyest dossier - Fichier d’un producteur Ajouter à mes favoris
Sommaire
Systèmes parallèles
Cours
TDs
TPs
Gestion des processus
Contrôle de processus
Producteurs / consommateurs
Fichier d’un producteur
Fichier d’un consommateur
Probabilités appliquées aux systèmes
Théorie des langages et compilation
VHDL
Suite : Fichier d’un consommateur

Fichier d’un producteur

///////////////////////////////////////
// Fichier d’un producteur
//////////////////////////////////////
extern int *ouvrir_zone(char *, int);
extern int ouvrir_sema(char *, int);
#define NBCASES 10
char * mutex_P = "sema.p" ;
char * mutex_R = "sema.r" ;
char * mutex_W = "sema.w";
char * indtampon = "cle.cle" ;
char * indentree = "in.in";
int mutexP, mutexR, mutexW ;
int taille = NBCASES * sizeof(int); // taille du buffer
int * tampon,* in ;
int i;
int main ()
{
printf("Bonjour, je suis un producteur !!\n") ;
tampon = ouvrir_zone(indtampon, taille);
in = ouvrir_zone(indentree, sizeof(int));
mutexW = ouvrir_sema(mutex_W, 0); // 0 ne modifie pas la valeur du sema
mutexR = ouvrir_sema(mutex_R, 0);
mutexP = ouvrir_sema(mutex_P, 0);
// corps de production
for(i=0; i<14 ; i++)
{ p(mutexP) ;// exclusion mutuelle des producteurs
p(mutexW);
tampon[*in]= i ;
*in = (*in+1) % (taille /sizeof(int));
printf("prod %d \n", i) ;
v(mutexR);
v(mutexP) ;
}
printf("prod: j'ai fini\n");
return 0 ;
}

 

Suite : Fichier d’un consommateur
Onyest dossier - cours ingénieur informatique et électronique : SPAR, PAS, TLC, VHDL - http://www.onyest.free.fr/dossier/cours - webmaster : novis@chez.com

-