Semaphore exemple - Fiks IT

Fiks IT

Everything began from nothing.

Breaking News

Post Top Ad

Responsive Ads Here

Post Top Ad

Responsive Ads Here

Friday, 31 March 2017

Semaphore exemple



this is an exemple in C, to use thread:

//progamme prod_cons.c
#include <semaphore.h>
#include <unistd.h> //pour sleep
#include <pthread.h>
#include <stdio.h>
#define N 3
sem_t occupe, libre ;
int tampon[N];
void* consommateur(void *);
void* producteur(void *);
int main() 
{ pthread_t th1,th2;
sem_init(&occupe,0,0); // initialiser les sémphores
sem_init(&libre,0,N);
pthread_create(&th1, NULL,consommateur ,NULL); //cree 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(&libre);
// produire
        tampon[ip]=objet;
        sem_post(&occupe);
    printf("\n ici prod. : tampon[%d]= %d\n", ip,objet);
        objet++;        nbprod++;
        ip=(ip+1)%N;
        }  while ( nbprod<=30 );
        pthread_exit(NULL);
}
void* consommateur(void *retrait)
{
  int ic=0, nbcons = 0, objet;
do { sem_wait(&occupe);
// consommer
        objet = tampon[ic];
        sem_post(&libre);
        printf("\n ici cons. :tampon[%d]= %d\n", ic, objet);
        ic=(ic+1)%N;
        nbcons++;
        sleep(2);
}  while ( nbcons<=30 );
pthread_exit(NULL);}

No comments:

Post a comment

Post Top Ad

Responsive Ads Here