C Pthread\u t未启动
我写这个简短的例子是为了理解C中的线程编程。它应该写“Thread0”。但没有产出。 这是代码C Pthread\u t未启动,c,multithreading,pthreads,C,Multithreading,Pthreads,我写这个简短的例子是为了理解C中的线程编程。它应该写“Thread0”。但没有产出。 这是代码 #include <stdio.h> #include <stdlib.h> #include <pthread.h> int i=0; pthread_mutex_t mutex; void * fonction(){ pthread_mutex_lock(&mutex); printf("thread %d \n",i++);
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
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;
}
在pthread\u create()
之后和之前插入pthread\u join(a,NULL)
返回退出成功
以确保在main()
返回之前完成子线程。pthread\u join()
是一种方法,但它不是唯一的解决方案
如果您的主线程不(需要)处于活动状态的时间(比它创建的线程长),那么它可以简单地退出
当主线程使用pthread_exit()
退出时,进程将保持活动状态,直到进程中的最后一个线程退出
当主线程执行初始化/设置并启动多个线程,然后不再需要它时,这非常有用。
否则,它将不得不等待所有线程完成(请记住,当main()退出时,整个进程将退出-调用
pthread\u exit()
将只退出主线程,而不是整个进程).查找pthread\u join
。感谢我将它添加到我的程序中,现在它正在工作。我是否必须放置pthread\u join以避免同步问题?
gcc -pthread test.c -o test