/*
 * Criação de uma nova thread, com envio de valor de retorno
 * via função pthread_exit.
 */
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

void* f_thread(void *v) {
  int thr_id = *(int *) v;
  int *ret = (int *) malloc (sizeof (int));

  printf("Thread %d.\n", thr_id);
  *ret = thr_id;
  pthread_exit(ret);
}

int main() {
  pthread_t thr;
  int thr_id = 1;
  int* r_id;

  pthread_create(&thr, NULL, f_thread, (void*) &thr_id);
  pthread_join(thr, (void**) &r_id);

  printf("Valor de retorno %d.\n", *r_id);

  free(r_id);
  
  return 0;
}