项目场景:
使用QtConcurrent::run执行部分耗时数据处理
问题描述
执行QtConcurrent::run时,在自己电脑上运行怎么测试线程运行都正常,但是客户电脑就是跑不起来,通过返回值将线程状态打印出来,线程已经启动
原因分析:
后来上网查了一下,QTConcurrent使用了QThreadPool线程池创建的线程,而此线程池中的最大线程数默认值为QThread::idealThreadCount()与cpu核心数目一致;
然后我调用一下函数,将线程次个数打印出来,我的天,才2个,难怪不行
QThreadPool::globalInstance()->maxThreadCount(); // 获取线程池最大线程个数
QThreadPool::globalInstance()->activeThreadCount(); // 当前活动的线程个数
解决方案:
调用一下函数,设置线程池最大线程数即可
QThreadPool::globalInstance()->setMaxThreadCount(100); // 设置最大线程个数