一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

项目场景:
使用QtConcurrent::run执行部分耗时数据处理

问题描述
执行QtConcurrent::run时,在自己电脑上运行怎么测试线程运行都正常,但是客户电脑就是跑不起来,通过返回值将线程状态打印出来,线程已经启动

原因分析:
后来上网查了一下,QTConcurrent使用了QThreadPool线程池创建的线程,而此线程池中的最大线程数默认值为QThread::idealThreadCount()与cpu核心数目一致;

然后我调用一下函数,将线程次个数打印出来,我的天,才2个,难怪不行

1 QThreadPool::globalInstance()->maxThreadCount();        // 获取线程池最大线程个数
2 QThreadPool::globalInstance()->activeThreadCount();     // 当前活动的线程个数

解决方案:

调用一下函数,设置线程池最大线程数即可

QThreadPool::globalInstance()->setMaxThreadCount(100);    // 设置最大线程个数

 

posted on 2022-07-22 14:10  一杯清酒邀明月  阅读(289)  评论(0编辑  收藏  举报