我一定要在pthread_join每个线程创建?(Do I have to pthread_join

2019-09-17 07:22发布

pthread_join()手册页:

当一个joinable线程终止,它的内存资源(线程描述符和stack )不释放直到线程执行pthread_join就可以了。 因此, pthread_join每个需要被调用一次joinable线程创建,以避免内存泄漏。

这是否意味着我需要加入每个线程我创建,以防止泄漏? 但加入阻塞调用者。

请解释更多。

Answer 1:

不需要加入一个线程,但它是一个好主意。 如果没有调用pthread_join(),有一种可能性,即线程终止前的main()函数将返回。 在这种情况下,在pthread_join()使得应用程序等到其他线程完成处理。 另外,当你加入该线程,它给你的机会来检查返回值,并确保一切顺利,它给你的机会来清理你可能已经与线程共享的任何资源。

编辑:这可能是您感兴趣的功能是pthread_detach()。 pthread_detach()允许线程终止后,线程的存储进行清理,所以没有必要事后加入线程。



文章来源: Do I have to pthread_join each thread I create?