#include #include #include #include #include #include float globale; void *thread_function1(void *arg){ int i; double x; for( i=0; i<5; i++) { x=(((float)rand())/RAND_MAX)*1e6; usleep(x); printf(" Sono il thread1! \n");for(i=0;i<1e8;i++) cos(i); } return NULL; } void *thread_function2(void *arg){ int i; double x; for( i=0; i<5; i++) { x=(((float)rand())/RAND_MAX)*1e6; usleep(x); printf("Sono il thread2! \n"); } return NULL; } int main(void) { srand(time(0)); pthread_t mythread1, mythread2; if ( pthread_create( &mythread1, NULL, thread_function1, NULL) ) { printf("errore di creazione thread."); abort(); } if ( pthread_create( &mythread2, NULL, thread_function2, NULL) ) { printf("errore di creazione thread."); abort(); } if ( pthread_join ( mythread1, NULL ) ) { printf("errore di sincronizzazione thread."); abort(); } if ( pthread_join ( mythread2, NULL ) ) { printf("errore di sincronizzazione thread."); abort(); } exit(0); }