在应用程序中使用QThreadPool :: globalInstance()时,我可以将最大线程数设置为一个数字(例如,对于此示例为50)
QThreadPool::globalInstance()->setMaxThreadCount(50);
以后我们可以在同一个应用程序中查询,并返回50。但是,如果从同一个应用程序调用的DLL中查询QThreadPool :: maxThreadCount(),它会返回最大线程数只有12个。然后我可以将库中的maxThreadCount增加到我想要的任何数字,分开从应用程序maxThreadCount编号。
QThreadPool :: globalInstance对于独立应用程序和库只是全局的吗?为什么共享相同进程的Qt DLL和应用程序不具有相同的全局QThreadPool?
答案 0 :(得分:0)
查看QThreadPool https://code.woboq.org/qt5/qtbase/src/corelib/global/qglobalstatic.h.html#158的实现 我们可以看到:
QThreadPool *QThreadPool::globalInstance()
{
return theInstance();
}
这里定义https://code.woboq.org/qt5/qtbase/src/corelib/thread/qthreadpool.cpp.html#50
Q_GLOBAL_STATIC(QThreadPool, theInstance)
从这里开始,如果由于某些不明原因你的dll和你的exec没有与完全相同的Qt核心dll相关联,你就会遇到问题