Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <pthread.h>
- #include <time.h>
- pthread_t *tid;
- int lettera;
- int finito=0;
- char *matrice;
- int riga;
- int n;
- pthread_mutex_t accedi;
- void *ricerca(void *arg)
- {
- int *dati=(int *)arg;
- int rig=*dati;
- printf("\nControllo la riga: %d",rig);
- int i;
- for(i=0;i<n;i++)
- {
- pthread_mutex_lock(&accedi);
- if(finito==0)
- {
- pthread_mutex_unlock(&accedi);
- if(lettera==matrice[rig*n+i])
- {
- printf("\nSono il Thread %d ed ho trovato l'occorrenza alla colonna %d",rig,i);
- pthread_mutex_lock(&accedi);
- finito=1;
- pthread_mutex_unlock(&accedi);
- }
- }else
- {
- pthread_mutex_unlock(&accedi);
- pthread_exit(0);
- }
- }
- printf("\nNon ho trovato alcuna occorrenza!!");
- pthread_exit(0);
- }
- int main(int argc,char **argv)
- {
- n=atoi(argv[1]);
- matrice=(char *) malloc((n*n)*sizeof(char));
- int i,j;
- lettera=argv[2][0];
- printf("\nLettera: %c",lettera);
- for(i=0;i<n;i++)
- for(j=0;j<n;j++)
- {
- matrice[i*n+j]=(rand()%25)+97;
- (j%n!=0)?printf("%c ",matrice[i*n+j]):printf("\n%c ",matrice[i*n+j]);
- }
- ///Creo i thread;
- tid=(pthread_t *)malloc(n*sizeof(pthread_t));
- for(i=0;i<n;i++)
- {
- usleep(100);
- pthread_create(&tid[i],NULL,ricerca,&i);
- }
- for(i=0;i<n;i++)
- pthread_join(tid[i],NULL);
- }
Add Comment
Please, Sign In to add comment