在QT5中,我需要创建至少20个QThread

时间:2016-01-30 08:20:57

标签: c++ qt5

QT5 中,我需要创建至少20个线程 应该是什么方法?
目前我使用QtConcurrent::run创建线程,但一次只运行其中四个。

1 个答案:

答案 0 :(得分:3)

幸运的是QtConcurrent和线程背后没有任何魔力,所以一次逻辑运行通常不同于实际上一次运行并且你不能指望如果只是因为您的计算机上有N个核心,或者您依赖于引擎盖下的线程池,请参阅N每个M运行的QtConcurrent个。{/ p>

特别是,如果您查看QFuture<T> QtConcurrent::run(Function function, ...) 的{​​{3}},就会发现:

  

QtConcurrent根据可用的处理器核心数自动调整使用的线程数。

关于您找到的documentation成员方法:

 QtConcurrent::run(QThreadPool::globalInstance(), function, ...);

它相当于:

QThreadPool

事实上,它声明:

  

在单独的线程中运行功能。该线程取自全局QThreadPool。请注意, function 可能无法立即运行;只有在线程可用时才会运行 function

您可以查看idealThreadCount的{​​{3}}了解更多详情 特别值得注意的是成员方法setMaxThreadCount,其中run表示:

  

返回可在系统上运行的理想线程数。这样就可以查询系统中的实际和逻辑处理器内核的数量。

请注意,您可以通过QThreadPool的成员方法ng-if永久documentation

这就是全部,非常简单,我们确实会记录下来 因此,您实际上无法保证您的线程一次可以一起运行。