Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <pthread.h>
- #include <semaphore.h>
- #include <time.h>
- int postiLiberi=200;//Risorsa condivisa
- //Esclusivo
- pthread_mutex_t mutex1;
- void *cassa(void *arg){
- pthread_mutex_lock(&mutex1); //Istruzione bloccante
- //sezione critica
- int posti;
- posti=1+rand()%10;//Operazione di I/O
- if(posti<=postiLiberi){
- printf("Posti liberi %d\n",postiLiberi);
- postiLiberi-=posti; //prenotazione posti
- printf("Posti prenotati %d\n",posti);
- }else{
- printf("Posti non disponibili\n");
- }
- pthread_mutex_unlock(&mutex1);
- pthread_exit(0); //Termina il thread
- }
- int main(int argc, char **argv)
- {
- pthread_mutex_unlock(&mutex1); //Init sbloccata di mutex1
- pthread_t tid[200];
- int i=0;
- srand(time(0));
- do{
- pthread_create(&tid[i],NULL,cassa,NULL);
- i++;
- }while(postiLiberi>0&&i<200);
- for(i=0;i<200;i++){
- pthread_join(tid[i],NULL);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement