std::thread 占用了 DLL 的引用次数,从而阻止了 DLL 的卸载。

问题描述 投票:0回答:1

我有一个windows c++ dll,它被一个第三方程序加载。我最近添加了一个线程池(这个 https:/github.comprogschjThreadPoolblobmasterThreadPool.h)。).

但是现在当第三方程序不再需要这个dll时,这个dll不再被卸载。原因是线程池中每产生一个线程就会增加一个dll的引用数,有一个问题是我不知道第三方程序什么时候不再需要这个dll,所以我不能在之前手动关闭线程池,以减少引用数。

所以我的问题是,有没有办法在不增加dll引用数的情况下创建一个线程?如果有,当dll被卸载时,我是否需要手动关闭线程池?

附注:我用的是vs 2019和c++17。

c++ multithreading dll reference stdthread
1个回答
0
投票

那DLL_PROCESS_DETACH它有没有被调用呢?如果是的话,你应该加入它的线程。

© www.soinside.com 2019 - 2024. All rights reserved.