Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/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中使用线程。获得意外结果_C_Multithreading_Mutex - Fatal编程技术网

在C中使用线程。获得意外结果

在C中使用线程。获得意外结果,c,multithreading,mutex,C,Multithreading,Mutex,我刚刚接触C语言中的线程。 从最基本的开始。 我只是尝试创建线程,并对它们使用互斥。 我声明了三个函数并为它们创建了三个线程,但每次我执行程序时,并不是所有三个进程都会一直执行 请给出解决方案。您必须传递thread对象,在pthread_join()中,请参阅更新的第35,38,41行 函数的定义是int pthread\u join(pthread\u t thread,void**retval) 这会有帮助的 34 thread1=pthread_create(&trd1

我刚刚接触C语言中的线程。 从最基本的开始。 我只是尝试创建线程,并对它们使用互斥。 我声明了三个函数并为它们创建了三个线程,但每次我执行程序时,并不是所有三个进程都会一直执行


请给出解决方案。

您必须传递thread对象,在
pthread_join()
中,请参阅更新的第35,38,41行

函数的定义是
int pthread\u join(pthread\u t thread,void**retval)

这会有帮助的

 34     thread1=pthread_create(&trd1,NULL,process1,(void *)nargs1);
 35     pthread_join(trd1, NULL);
 36
 37     thread2=pthread_create(&trd2,NULL,process2,(void *)nargs2);
 38     pthread_join(trd2, NULL);
 39
 40     thread3=pthread_create(&trd3,NULL,process3,(void *)nargs3);
 41     pthread_join(trd3, NULL);

您没有正确调用
pthread\u join
,请查看手册页。我已回滚您最近的编辑,这基本上破坏了问题。编辑了问题并删除了代码,因为这是我的类中的一个aasignment,我不希望它被复制,但仍然没有获得所需的输出。虽然如果我在主函数返回之前放置sleep,它会工作。有谁能解释一下为什么上面的代码不能正常工作,因为join做了同样的等待。谢谢你的回答,它起作用了。是用错误的参数加入线程的。