我可以在pthread_detached线程上调用pthread_join吗?

时间:2015-03-05 20:38:40

标签: c pthreads

我有一个从一个父线程产生的16个线程。我正在等待孩子们通过在父母中调用pthread_join来完成执行。但是,之后在每个子线程中我调用pthread_detach。我想知道父母是否仍会等待孩子们完成执行。在man页面中它为pthread_detach说:“当一个分离的线程终止时,它的资源是        在不需要的情况下自动释放回系统        另一个与终止线程连接的线程。“

1 个答案:

答案 0 :(得分:4)

  

我可以在pthread_detached线程上调用pthread_join吗?

没有

  

我想知道父母是否仍会等待孩子们完成执行。

这是未定义的行为。

pthread_join说:

  

如果pthread_join()的thread参数指定的值未引用可连接线程,则行为未定义。

分离的线程无法连接。

如果子线程在另一个线程尝试加入时将自身更改为已分离,则您现在正在加入一个不可连接的线程。

对于每个帖子,您最多只能呼叫pthread_joinpthread_detach 一次。不要同时调用同一个线程。