/* Programma di esempio di due thread .... */ #include #include #include #include #include #include "myutils.h" #define CICLI 10 /* Variabile che regola il tempo perso nel ciclo for */ #define DELAY 2000000 /* Memoria Condivisa fra i thread */ struct { int val; } shared; /* Forward declaration */ void *somma1(void *); void *somma2(void *); int main(void) { pthread_t som1TID, som2TID; int risu; /* Inizializzo la memoria condivisa */ shared.val = 0; /* Setto il concurrency level a 2 */ pthread_setconcurrency(2); /* A questo punto posso creare i thread .... */ risu = pthread_create(&som1TID, NULL, somma1, NULL); if (risu != 0) sys_err("Errore nella creazione del primo thread\n"); risu = pthread_create(&som2TID, NULL, somma2, NULL); if (risu != 0) { printf("Errore nella creazione del secondo thread\n"); pthread_kill(som1TID, SIGKILL); return -1; } /* A questo punto aspetto che i due thread finiscano ... */ pthread_join(som1TID, NULL); pthread_join(som2TID, NULL); printf("E' finito l'esperimento ....\n"); return (0); } void *somma1(void *in) { int i, j; for(i=0; i