通过pthread_join()加入两个pthread并不能按预期工作

时间:2018-04-26 09:04:41

标签: c linux multithreading pthreads

我通过LNK2019创建两个不同的VS 2017并通过调用pthread等待退出。

当我运行程序时,最后一个输出是"等待thread1完成...",所以它在尝试加入第一个线程然后终止时实际停止。

当我只使用pthread_create()创建并运行一个线程并等待其执行完成时,一切正常,输出正如预期。

我在这里缺少什么?我已经在网上搜索并发现pthread_join()在创建多个线程时没有像往常那样表现。但是我如何实际使用它以等待完成两个pthread_join()的执行?

这是我的代码:

pthread_join()

1 个答案:

答案 0 :(得分:4)

您将错误的参数传递给pthread_create()函数。

rT2 = pthread_create(&thread2, NULL, assembleDeLorean, &iC_2);
rT1 = pthread_create(&thread1, NULL, assembleDeLorean, &iC_1);

应该是

rT2 = pthread_create(&thread2, NULL, assembleDeLorean, iC_2);
rT1 = pthread_create(&thread1, NULL, assembleDeLorean, iC_1);
相关问题