C 多次加入同一pthread

C 多次加入同一pthread,c,linux,pthreads,posix,C,Linux,Pthreads,Posix,我的程序中的流调用pthread\u join(thread\u id,nullptr) 对于来自同一调用线程的同一线程\u id,执行2次 第一次调用成功返回,但第二次调用无限期挂起。文档没有明确说明禁止对同一个线程id多次调用pthread_join。确实如此吗 我知道我可以使用pthread_cond_t实现线程同步,但我想先了解pthread_join的限制。请看一下-在注释部分,它指出: 与先前已连接的线程连接会导致未定义的行为 链接中还有很多关于连接线程(以及其他方面,如果您搜索其他

我的程序中的流调用
pthread\u join(thread\u id,nullptr)
对于来自同一调用线程的同一
线程\u id
,执行2次

第一次调用成功返回,但第二次调用无限期挂起。文档没有明确说明禁止对同一个线程id多次调用pthread_join。确实如此吗

我知道我可以使用pthread_cond_t实现线程同步,但我想先了解pthread_join的限制。

请看一下-在注释部分,它指出:

与先前已连接的线程连接会导致未定义的行为


链接中还有很多关于连接线程(以及其他方面,如果您搜索其他pthread函数的话)的好信息。

这没有意义:
pthread\u join
在连接的线程结束时返回。一条线只能结束一次。。。另外:状态:与先前已连接的线程连接会导致未定义的行为。文档中明确指出“如果该线程已终止,那么pthread_join()将立即返回”。因此,如果程序的不同部分对检查其子进程是否结束感兴趣,这是有意义的。@Roman:“已终止但尚未加入”和“已加入”是完全不同的事情。任何在
pthread\u join
之后使用
pthread\u t
的行为都是非常危险的未定义行为(这是在free-type bug之后使用的)。我使用join作为同步机制来确保后台任务已经完成,我需要从程序的多个点检查这一点。我想使用join进行同步在概念上是错误的。但不确定它的正确用例是什么…一个join()太多了一次:(谢谢!我不敢相信我错过了那一行:(