1

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

4

1 回答 1

1

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

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

于 2012-06-06T12:12:12.847 回答