#include #include #include #include #include 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 con ID=%lu! \n", pthread_self()); } 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("\tSono il thread2 con ID=%lu! \n", pthread_self()); } 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); }