Lud*_*cka 5 multithreading handle visual-c++
今天我在使用 std::thread 时注意到一个奇怪的想法。这是最小的测试用例:
void test()
{
std::thread t1([] {});
t1.join();
}
Run Code Online (Sandbox Code Playgroud)
每次运行这段代码时,都会有一个 Handle 泄漏。
这是来自 ProcessExplorer 的视图。这些泄漏的句柄是线程互斥锁“BaseNammedObjects\bx_thread_mutex”
这些互斥体在未来任何时候都不会被释放。这是一些知识问题吗?
我正在使用最新的 Visual Studio 2019 16.7.3,我正在 32 位应用程序上测试它(调试和发布也是如此)。
编辑:
泄漏的句柄与执行次数有关,因此此代码段:
for (int n = 0; n < 1000; n++)
{
std::thread t1([] {});
t1.join();
}
Run Code Online (Sandbox Code Playgroud)
抱歉,半虚惊一场。
这个问题似乎是由用于内存泄漏检测的第 3 方插件 Deleaker(我现在刚刚测试)引起的(有趣,对吧?;-))。
当我禁用这个插件时,一切正常。所以这是 Deleaker 在里面做的事情。我会将这个问题报告给作者。
编辑:最新版本的 Deleaker 似乎修复了这个问题。
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |