gpt4 book ai didi

linux - 我是否必须 pthread_join 我创建的每个线程?

转载 作者:IT王子 更新时间:2023-10-29 00:31:25 25 4
gpt4 key购买 nike

来自 pthread_join() 手册页:

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

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

请解释更多。

最佳答案

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

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

关于linux - 我是否必须 pthread_join 我创建的每个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1064640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com