如果执行的函数结束得很好,分离的boost::thread会很好地清理吗

如果执行的函数结束得很好,分离的boost::thread会很好地清理吗,boost,boost-thread,Boost,Boost Thread,假设我显式或隐式地分离boost::thread(析构函数执行此操作,与std::thread不同),并且线程调用的函数保证不会让任何异常未处理。。。 这是否泄漏了一些资源,或者当函数退出时,操作系统是否清理了所有内容? 如果你想知道我为什么想要它: 我希望在不调用线程停止(for.join())的情况下进行一些异步激发并忘记执行的东西 大多数资源(动态分配的内存、各种句柄等)都是进程范围的,因此当分配它们的线程结束时,它们当然不会被释放。(另一方面,有一些与线程相关的资源,比如线程堆栈和TLS

假设我显式或隐式地分离boost::thread(析构函数执行此操作,与std::thread不同),并且线程调用的函数保证不会让任何异常未处理。。。 这是否泄漏了一些资源,或者当函数退出时,操作系统是否清理了所有内容? 如果你想知道我为什么想要它:
我希望在不调用线程停止(for.join())的情况下进行一些异步激发并忘记执行的东西

大多数资源(动态分配的内存、各种句柄等)都是进程范围的,因此当分配它们的线程结束时,它们当然不会被释放。(另一方面,有一些与线程相关的资源,比如线程堆栈和TLS(线程本地存储),它们在线程退出时被释放,但我想这不是你的意思。)


另外,请注意join()不是“线程停止”,它只是等待线程停止。也就是说,当调用thread1.join()时,只需等待thread1结束。它不会释放任何资源。

大多数资源——动态分配的内存、各种句柄等——都是进程范围的,因此当分配它们的线程结束时,它们当然不会被释放。(另一方面,有一些与线程相关的资源,比如线程堆栈和TLS(线程本地存储),它们在线程退出时被释放,但我想这不是你的意思。)


另外,请注意join()不是“线程停止”,它只是等待线程停止。也就是说,当调用thread1.join()时,只需等待thread1结束。它不会释放任何资源。

你说的“东西”是什么意思?大多数资源(动态分配的内存、各种句柄等)都是进程范围的,所以当分配它们的线程结束时,它们当然不会被释放。IDK非常了解线程的系统处理,因此IDK是否只有在正确的情况下才释放资源。join()。join()只是在等待线程停止-没什么。好的,tnx,我认为这应该是一个答案。如果你想要std::move()你的评论,我会接受。你说的“东西”是什么意思?大多数资源(动态分配的内存、各种句柄等)都是进程范围的,所以当分配它们的线程结束时,它们当然不会被释放。IDK非常了解线程的系统处理,因此IDK是否只有在正确的情况下才释放资源。join()。join()只是在等待线程停止-没什么。好的,tnx,我认为这应该是一个答案。如果你想要std::move()你的评论,我会接受的。