来自pthread_join()
手册页:
当joinable
线程终止时,其内存资源(线程描述符和stack
)在线程对其执行pthread_join
之前不会被释放。因此,必须为创建的每个pthread_join
线程调用joinable
一次,以避免内存泄漏。
这是否意味着我需要加入我创建的每个线程以防止泄漏?但加入阻止来电者。
请详细说明。
答案 0 :(得分:8)
你不需要加入一个帖子,但这是一个好主意。在不调用pthread_join()的情况下,main()函数有可能在线程终止之前返回。在这种情况下,pthread_join()使应用程序等待,直到另一个线程完成处理。此外,当您加入该主题时,它使您有机会检查返回值并确保一切顺利,并且它使您有机会清理可能与该主题共享的任何资源。
编辑:你可能感兴趣的一个函数是pthread_detach()。 pthread_detach()允许在线程终止后清除线程的存储,因此之后不需要加入线程。