The function header for pthread_create looks like this:
pthread_create
int pthread_create(pthread_t * thread, const pthread_attr_t * attr,
From the spec:
If the start_routine returns, the effect is as if there was an implicit call to pthread_exit() using the return value of start_routine as the exit status.
start_routine
pthread_exit()