mercredi 31 décembre 2014

how to compile and correct this app.c [on hold]


this is not correct ,i do not why so please can you help me



#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#include<semaphore.h>
#include<pthread.h>

sem_t mutex;
sem_t vide;
sem_t plein;
#define N 3
#define VRAI 1
pthread_t prod,cons;
int tampon[N];
int libre=0, prochain=0;
void*producteur(void*arg)
{
int objet;
while(VRAI){
objet=1+(int)(100.0*rand()/(RAND_MAX+1.0));
sem_wait(&vide);
sem_wait(&mutex);
tampon[libre]=objet;
printf("Prod:tampon[%d]=%d/n",libre,objet);
libre=(libre+1)%N;
sem_post(&mutex);
sem_post(&plein);
}
return(NULL);
}
void*consommateur(void*arg)
{
int objet;
while(VRAI){
sem_wait(&plein);
sem_wait(&mutex);
objet=tampon[prochain];
printf("Cons:tampon[%d]=%d/n",prochain,objet);
prochain=(prochain+1)%N;
sem_post(&mutex);
sem_post(&vide);
sleep(2);
}
return(NULL);
}
int main(int argc,char**argv)
{
sem_init(&mutex,0,1);
sem_init(&vide,0,N);
sem_init(&plein,0,0);
pthread_create(&prod,NULL,producteur,NULL);
pthread_create(&cons,NULL,consommateur,NULL);
pthread_join(&prod,NULL);
pthread_join(&cons,NULL);
return 0;
}


Aucun commentaire:

Enregistrer un commentaire