如何设置 QTConcurrent 操作的最大线程数?

Posted

技术标签:

【中文标题】如何设置 QTConcurrent 操作的最大线程数?【英文标题】:How to set the maximum thread count for QTConcurrent operations? 【发布时间】:2012-07-15 16:53:33 【问题描述】:

我在项目列表上运行 QTConcurrent::Map 以执行一些图像处理任务。这在只有几个线程的机器上运行良好,但由于我的处理代码的内存需求,在具有大量线程的机器上会遇到问题。

是否可以为 QTConcurrent 操作设置最大并发线程数,或者我是否需要使用我拥有更多控制权的 QThreadPool 重新编码?

感谢您的建议。

【问题讨论】:

我看到 QtConcurrent::Map 运行特定数量的项目。不是说线程数吗? 嗯.. QtConcurrent::map 运行在一组项目上是的,但似乎默认线程数等于机器中的内核数,我想运行它更少。 【参考方案1】:

QtConcurrent::map 使用全局线程池。

您可以使用QThreadPool::globalInstance()->setMaxThreadCount(n) 更改其线程数。

【讨论】:

QThreadPool::globalInstance()->setMaxThreadCount(n) 完成了这项工作。谢谢! 这也适用于 QtConcurrent::run() 里面的代码不是循环的(如 ffmpeg/avlib)。

以上是关于如何设置 QTConcurrent 操作的最大线程数?的主要内容,如果未能解决你的问题,请参考以下文章

QtConcurrent::run 如何在主线程上结束?

从qt中的另一个线程运行qtconcurrent时如何关闭程序

QtConcurrent::run 如何停止后台任务

qt 创建线程

QtConcurrent 运行的线程 id

停止由 QtConcurrent::run 启动的线程?