我必须pthread_join我创建的每个线程吗?

时间:2009-06-30 16:19:22

标签: linux multithreading

来自pthread_join()手册页:

joinable线程终止时,其内存资源(线程描述符和stack)在线程对其执行pthread_join之前不会被释放。因此,必须为创建的每个pthread_join线程调用joinable一次,以避免内存泄漏。

这是否意味着我需要加入我创建的每个线程以防止泄漏?但加入阻止来电者。

请详细说明。

1 个答案:

答案 0 :(得分:8)

你不需要加入一个帖子,但这是一个好主意。在不调用pthread_join()的情况下,main()函数有可能在线程终止之前返回。在这种情况下,pthread_join()使应用程序等待,直到另一个线程完成处理。此外,当您加入该主题时,它使您有机会检查返回值并确保一切顺利,并且它使您有机会清理可能与该主题共享的任何资源。

编辑:你可能感兴趣的一个函数是pthread_detach()。 pthread_detach()允许在线程终止后清除线程的存储,因此之后不需要加入线程。