在C中使用线程。获得意外结果
我刚刚接触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
请给出解决方案。您必须传递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做了同样的等待。谢谢你的回答,它起作用了。是用错误的参数加入线程的。