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

jac*_*hab 7 linux multithreading

pthread_join()手册页:

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

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

请解释一下.

Joe*_*e M 8

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

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

  • 您还可以使用pthread_attr_setdetachstate创建具有PTHREAD_CREATE_DETACHED属性的线程 (2认同)