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>
- #define MAX_LEN 10
- struct PARAMDATA
- {
- double k;
- int delay;
- };
- pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
- pthread_t tVisualizza, tMoltiplica1, tMoltiplica2;
- int vet[MAX_LEN];
- int esci;
- void *visualizza()
- {
- int i = 0;
- while (!esci)
- {
- pthread_mutex_lock(&mutex);
- printf("VET:\n");
- for (i = 0;i<MAX_LEN;i++)
- printf("%d\t", vet[i]);
- printf("\n");
- pthread_mutex_unlock(&mutex);
- usleep(500*1000);
- }
- }
- void *moltiplica(void* args)
- {
- struct PARAMDATA *param = (struct PARAMDATA*)args;
- int i;
- while (!esci)
- {
- pthread_mutex_lock(&mutex);
- for (i = 0;i<MAX_LEN;i++)
- vet[i] = vet[i]*(*param).k;
- pthread_mutex_unlock(&mutex);
- usleep((*param).delay*1000);
- }
- }
- int main()
- {
- int i = 0;
- for (i = 0; i < MAX_LEN; i++)
- if (i%2==0)
- vet[i] = 1;
- else
- vet[i] = -1;
- struct PARAMDATA *param1 = malloc(sizeof(struct PARAMDATA));
- (*param1).k=2;
- (*param1).delay=250;
- struct PARAMDATA *param2 = malloc(sizeof(struct PARAMDATA));
- (*param2).k = -2;
- (*param2).delay=900;
- esci = 0;
- pthread_create(&tVisualizza, NULL, visualizza, NULL);
- pthread_create(&tMoltiplica1, NULL, moltiplica, (void *)param1);
- pthread_create(&tMoltiplica2, NULL, moltiplica, (void *)param2);
- usleep(10*1000*1000);
- esci = 1;
- pthread_join(tVisualizza, NULL);
- pthread_join(tMoltiplica1, NULL);
- pthread_join(tMoltiplica2, NULL);
- }
Add Comment
Please, Sign In to add comment