Showing posts with label semaphore. Show all posts
Showing posts with label semaphore. Show all posts

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

Featured Post

Developer Dashbord SharePoint PowerShell

Developer Dashbord $cs = [Microsoft.SharePoint.Administration.SPWebService]::ContentService $dash= $cs.DeveloperDashboardSettings $dash....