如何设置 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 操作的最大线程数?的主要内容,如果未能解决你的问题,请参考以下文章