从pthread_join()
手册页:
当一个joinable
线程终止,它的内存资源(线程描述符和stack
)不释放直到线程执行pthread_join
就可以了。 因此, pthread_join
每个需要被调用一次joinable
线程创建,以避免内存泄漏。
这是否意味着我需要加入每个线程我创建,以防止泄漏? 但加入阻塞调用者。
请解释更多。
从pthread_join()
手册页:
当一个joinable
线程终止,它的内存资源(线程描述符和stack
)不释放直到线程执行pthread_join
就可以了。 因此, pthread_join
每个需要被调用一次joinable
线程创建,以避免内存泄漏。
这是否意味着我需要加入每个线程我创建,以防止泄漏? 但加入阻塞调用者。
请解释更多。
你不需要加入一个线程,但它是一个好主意。 如果没有调用pthread_join(),有一种可能性,即线程终止前的main()函数将返回。 在这种情况下,在pthread_join()使得应用程序等到其他线程完成处理。 另外,当你加入该线程,它给你的机会来检查返回值,并确保一切顺利,它给你的机会来清理你可能已经与线程共享的任何资源。
编辑:这可能是您感兴趣的功能是pthread_detach()。 pthread_detach()允许线程终止后,线程的存储进行清理,所以没有必要事后加入线程。