/* * Cada thread tem um identificador único! */ #include #include #include #include void* f_thread(void *v) { int thr_id; int *ret; sleep(1); thr_id = *(int *) v; ret = (int *) malloc (sizeof (int)); printf("Thread %d.\n", thr_id); *ret = thr_id; return (void*) ret; } int main() { pthread_t thr[10]; int* r_id; int i, id[10]; for (i = 0; i < 10; i++) { id[i] = i; pthread_create(&thr[i], NULL, f_thread, (void*) &id[i]); } for (i = 0; i < 10; i++) { pthread_join(thr[i], (void**) &r_id); printf("Valor de retorno %d.\n", *r_id); } return 0; }