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

时间:2015-08-15 07:08:41

标签: c multithreading mutex

我刚接触C中的线程。 所以从基础开始。 我只是想创建线程并在它们上使用互斥。 我已经声明了三个函数并为它们创建了3个线程,但每次执行我的程序时,并不是所有三个进程都会一直执行

请解决这个问题。

1 个答案:

答案 0 :(得分:2)

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

该函数的定义是int pthread_join(pthread_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);