Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <pthread.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- pthread_mutex_t muta=PTHREAD_MUTEX_INITIALIZER;
- int value=0;
- int counter;
- char* dati[10] = {"pippo", "tizia", "marina", "ursus", "rocco", "adamo", "eva", "fedro", "esopo",
- "francesco"};
- void* elimina(void* arg) {
- int i,j,tr;
- char* nome;
- nome=malloc(20);
- pthread_mutex_lock(&muta);
- strcpy(nome, dati[counter]); // qui copia il dato
- dati[counter] = NULL;
- tr = pthread_self(); //con la funzione pthread_self si ottiene lβID del thread chiamante
- usleep((int) (2000000.0*rand()/(RAND_MAX+1.0)));
- printf("Eliminato %s dal thread %d\n",nome,tr);
- counter--; // qui aggiorna il counter della lista dati
- pthread_mutex_unlock(&muta);
- }
- int main () {
- int i;
- counter=9;
- srand((int)time);
- pthread_t thread[10];
- for(i=0;i<10;i++){
- pthread_create (&thread[i], NULL, &elimina, NULL);
- }
- for(i=0;i<10;i++)
- pthread_join(thread[i], NULL);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement