Pthread_t没有开始

我写了这个简短的例子,以便理解C中的线程编程。我应该编写“线程0”。 但是没有输出。 这是代码。

#include  #include  #include  int i=0; pthread_mutex_t mutex; void * fonction(){ pthread_mutex_lock(&mutex); printf("thread %d \n",i++); pthread_mutex_unlock(&mutex); pthread_exit(NULL); } int main(){ pthread_t a; pthread_mutex_init(&mutex,NULL); pthread_create(&a,NULL,fonction,NULL); return EXIT_SUCCESS; } 

有人能帮我吗 ? Ps:我用它来编译它

 gcc -pthread test.c -o test 

pthread_join(a, NULL)之后和return EXIT_SUCCESS;之前插入pthread_join(a, NULL) return EXIT_SUCCESS; 确保在main()返回之前完成子线程。

pthread_join()是一种方式,但它不是唯一的解决方案。

如果你的主线程不需要(需要)活着更长时间(比它创建的线程),它可以简单地退出pthread_exit(0)

当主线程使用pthread_exit()退出时,进程保持活动状态,直到进程中的最后一个线程退出。

当主线程进行初始化/设置并启动多个线程然后不再需要它时,这很有用。 否则,它必须等待所有线程完成(请记住,当main()退出时,整个进程退出 – 调用pthread_exit()将只退出主线程 ,而不是整个进程)。