4

pthread_detach()文档说:

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

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

4

3 回答 3

3

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

于 2012-09-14T17:50:07.173 回答
2

只是与线程相关联的资源,为连接操作而保留(即状态代码和更多)。

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

于 2012-09-14T17:52:44.843 回答
2

这是正确的; 如果您既不加入也不分离线程,您将泄漏资源。

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

于 2012-09-14T17:50:07.947 回答