我必须分离或加入线程吗?
Must I detach or join a pthread?
pthread_detach()
文档说:
pthread_detach()
功能应向实施指示 当线程线程时,可以回收该线程的存储 终止。
如果我创建了一个可连接线程并且不分离或连接它,后果是什么?该线程的资源不会被回收?
你回答了你自己的问题? 线程需要系统中的某些资源。 这些将一直保留,直到线程连接,或者线程分离并终止。 (在分离线程之前,系统必须假定您将在将来的某个时候加入它,并且无法释放资源。
没
错;如果你既不加入也不分离线程,就会泄漏资源。
每个线程都会为其堆栈分配一些内存,可能还会分配一些控制结构,并且不会释放这些内存。在某些操作系统上,可以启动的线程数有限制,并且最终可能会达到无法再启动的状态。
只是与线程关联的资源,这些资源保留用于连接操作(即状态代码和更多)。
"分离"只是意味着我不打算在这个线程上调用 join,因此在线程完成后清理线程特定的数据(这本来可以通过调用 join 来完成)。
相关文章:
- 为什么即使调用了析构函数,C++11 中的分离线程也可以执行
- 检查分离的线程是否还活着?
- 为什么分离线程没有得到输出消息
- 如何"stop"正在等待条件变量的分离线程?
- 线程::加入与分离
- C++ 11 线程在分离后会自动销毁吗?
- 分离的线程:在繁忙时销毁互斥锁 错误C++
- 分离线程然后让它超出范围(并使其仍在运行)是否安全?
- 自终止线程.使用联接或分离
- 为什么 std::call_once 在联接和分离的线程中的行为不同?
- 重用分离的线程
- 为什么线程分离时程序挂起
- 防止线程在处理异常后在分离时调用 std::terminate()
- 无法永远分离线程 c++
- 如何知道分离的STD ::线程是否完成了执行
- 访问全局或静态对象的分离线程
- 向量未在分离的线程中推送值
- 在GTKMM中,在分离的线程中发生失效后,on_draw方法将停止调用
- 分离的情况 std::线程在 parrent 线程离开其块之后
- C++11线程分离