假设我明确或隐式地分离boost :: thread(析构函数执行它,与std :: thread不同),并保证线程调用的函数不会让任何异常未处理... 这会泄漏一些资源,还是在函数退出时由OS清理的所有内容? 如果你想知道为什么我想要它: 我希望有一些异步激发并忘记执行的东西,而不调用线程停止(对于.join())。
答案 0 :(得分:1)
大多数资源 - 动态分配的内存,各种句柄等 - 都是进程范围的,因此当分配它们的线程结束时,它们当然不会被释放。 (另一方面,有线程相关的资源,如线程堆栈和TLS(线程本地存储),它们在线程出口处被释放,但我想这不是你的意思。)
另外,请注意join()不是“线程停止”,它只是等待线程停止。即,当你调用thread1.join()时,你只需要等到thread1结束。它不会释放任何资源。