
#include <semaphore.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> // sleep

sem_t s;

routine(void *num) {
       sem_wait(&s);
       printf("Thread %d dans portion critique\n",(int)num);
       sleep(aleatoire());
       printf("Thread %d sort\n",(int)num);
       sem_post(&s);
       sleep(aleatoire());
}

int main(void) {
       int i;
       pthread_t thread;
       sem_init(&s,0,3);
       for(i=0;i<2;i++) {
            pthread_create(&thread, NULL, routine, (void *)i);
       }
}
