// Tache 2 //progamme prod_cons.c #include #include //pour sleep #include #include #define N 3 sem_t plien, vide ; int tampon[N]; void* consommateur(void *); void* producteur(void *); int main() { pthread_t th1,th2; sem_init(&plien,0,0); // initialiser les s�maphores sem_init(&vide,0,N); pthread_create(&th1, NULL,consommateur ,NULL); //cr�er les threads pthread_create(&th2,NULL,producteur,NULL); pthread_join(th1,NULL); // attendre la fin des threads pthread_join(th2,NULL); printf("ici main, fin des threads \n"); return 0; } void* producteur(void *depot) { int ip=0, nbprod=0, objet=0; do { sem_wait(&vide); // produire tampon[ip]=objet; sem_post(&plien); printf("\n ici producteur : tampon[%d]<-- %d\n", ip,objet); objet++; nbprod++; ip=(ip+1)%N; } while ( nbprod<=5 ); return NULL; } void* consommateur(void *retrait) { int ic=0, nbcons = 0, objet; do { sem_wait(&plien); // consommer objet = tampon[ic]; sem_post(&vide); printf("\n ici consomateur : %d <--- tampon[%d] \n", objet, ic); ic=(ic+1)%N; nbcons++; sleep(2); } while ( nbcons<=5 ); return (NULL); }