Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Pthread\u t未启动_C_Multithreading_Pthreads - Fatal编程技术网

C Pthread\u t未启动

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++);

我写这个简短的例子是为了理解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++);
    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