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

时间:2012-06-01 09:02:19

标签: boost boost-thread

假设我明确或隐式地分离boost :: thread(析构函数执行它,与std :: thread不同),并保证线程调用的函数不会让任何异常未处理... 这会泄漏一些资源,还是在函数退出时由OS清理的所有内容? 如果你想知道为什么我想要它: 我希望有一些异步激发并忘记执行的东西,而不调用线程停止(对于.join())。

1 个答案:

答案 0 :(得分:1)

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

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