我有一个从一个父线程产生的16个线程。我正在等待孩子们通过在父母中调用pthread_join来完成执行。但是,之后在每个子线程中我调用pthread_detach。我想知道父母是否仍会等待孩子们完成执行。在man页面中它为pthread_detach说:“当一个分离的线程终止时,它的资源是 在不需要的情况下自动释放回系统 另一个与终止线程连接的线程。“
答案 0 :(得分:4)
我可以在pthread_detached线程上调用pthread_join吗?
没有
我想知道父母是否仍会等待孩子们完成执行。
这是未定义的行为。
如果
pthread_join()
的thread参数指定的值未引用可连接线程,则行为未定义。
分离的线程无法连接。
如果子线程在另一个线程尝试加入时将自身更改为已分离,则您现在正在加入一个不可连接的线程。
对于每个帖子,您最多只能呼叫pthread_join
或pthread_detach
一次。不要同时调用同一个线程。