Ваша проблема возникает из-за того, что ваш основной поток возвращается из основного и, следовательно, вызывает exit (или _exit). Все работающие потоки уничтожаются при выходе из программы. В этом случае рабочий поток не успел выполнить до того, как он был уничтожен.
Вы можете использовать pthread_join
, чтобы дождаться завершения потока перед возвратом из основного.
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
void *myThread(void *arg);
int main()
{
void* thread_return;
pthread_t mythread;
int ret;
ret = pthread_create(&mythread, NULL, myThread, NULL);
if (ret != 0)
{
printf("Can't create pthread: %s\n", strerror(errno));
exit(-1);
}
ret = pthread_join(mythread, &thread_return);
if (ret != 0)
{
printf("Can't join pthread: %s\n", strerror(errno));
exit(-1);
}
return 0;
}
void *myThread(void *arg)
{
printf("OK! NOW ON THE THREAD\n");
pthread_exit(NULL);
}