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 ;
- }
|