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

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

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

感谢您的建议。

【问题讨论】:

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

标签: multithreading qt


【解决方案1】:

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

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

【讨论】:

  • QThreadPool::globalInstance()->setMaxThreadCount(n) 完成了这项工作。谢谢!
  • 这也适用于 QtConcurrent::run() 里面的代码不是循环的(如 ffmpeg/avlib)。
猜你喜欢
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 2020-11-28
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多