我必须分离或加入pthread吗?

时间:2012-09-14 17:46:17

标签: c++ pthreads

pthread_detach()文档说:

  

pthread_detach()函数应指示实现   该线程可以回收线程线程的存储空间   终止。

如果我创建一个可连接线程并且不分离或加入它会导致什么后果?该线程的资源不会被回收?

3 个答案:

答案 0 :(得分:3)

你回答了自己的问题?线程需要系统中的某些资源。这些将被保留,直到线程被连接,或者它被分离并终止。 (在你分离线程之前,系统必须假设你将来某个时候加入它,并且无法释放资源。)

答案 1 :(得分:2)

这是对的;如果你既不加入也不拆分线程,你就会泄漏资源。

每个线程将为其堆栈分配一些内存,可能还有一些控制结构,并且不会释放此内存。在某些操作系统上,您可以启动的线程数量有限制,最终可能会进入无法启动的状态。

答案 2 :(得分:2)

与连接操作保留的线程关联的资源(即状态代码和更多一点)。

“Detached”只是意味着我不会在这个线程上调用join,所以在线程完成时清理线程特定的数据(这可以通过调用join来完成)。