Advertisement
nigu

thread e semafori

Dec 1st, 2014
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.97 KB | None | 0 0
  1. #include <pthread.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. pthread_mutex_t muta=PTHREAD_MUTEX_INITIALIZER;
  7.  
  8. int value=0;
  9. int counter;
  10. char* dati[10] = {"pippo", "tizia", "marina", "ursus", "rocco", "adamo", "eva", "fedro", "esopo",
  11. "francesco"};
  12.  
  13. void* elimina(void* arg) {
  14.     int i,j,tr;
  15.     char* nome;
  16.     nome=malloc(20);
  17.    
  18.    
  19.     pthread_mutex_lock(&muta);
  20.    
  21.     strcpy(nome, dati[counter]); // qui copia il dato
  22.    
  23.     dati[counter] = NULL;
  24.    
  25.     tr = pthread_self(); //con la funzione pthread_self si ottiene l’ID del thread chiamante
  26.     usleep((int) (2000000.0*rand()/(RAND_MAX+1.0)));
  27.     printf("Eliminato %s dal thread %d\n",nome,tr);
  28.    
  29.     counter--; // qui aggiorna il counter della lista dati
  30.    
  31. pthread_mutex_unlock(&muta);
  32. }
  33.  
  34. int main () {
  35.     int i;
  36.     counter=9;
  37.     srand((int)time);
  38.     pthread_t thread[10];
  39.     for(i=0;i<10;i++){
  40.         pthread_create (&thread[i], NULL, &elimina, NULL);
  41.     }
  42.     for(i=0;i<10;i++)
  43.         pthread_join(thread[i], NULL);
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement