Lo peor que podría pasar es que se mezclasen las salidas.
Pon el join al final del main, y mira si la salida es igual.
En caso de que la salida siga siendo incorrecta, comprueba si el thread se ejecuta.
Pon el join al final del main, y mira si la salida es igual.
En caso de que la salida siga siendo incorrecta, comprueba si el thread se ejecuta.
He modificado un poco el código y al final se ha quedado así:
Código
#include <stdio.h> #include <string.h> #include <malloc.h> #include <pthread.h> void * funcion(void *); int b=0; int main() { pthread_t idhilo; int a=5; pthread_create(&idhilo, NULL, funcion, &a); int y; pthread_join(idhilo, NULL); } void * funcion(void * a) { b=5; }
Y el valor de b me da 0, por lo que no se ejecuta el hilo hijo hasta que no llega al join...