1

我想知道在线程中多次调用相同函数生成随机点(随机坐标)的最佳实践。实际上,我已经为这个函数实现了并行调用,比如 randomPoint()。现在,我想尝试是否改进不是为每个调用创建一个线程,而是准确地以可用线程数运行计算。我计算

QThreadPool pool;
int freeThreads_ = pool.maxThreadCount();

int iterPerThread_ = ((N-m)%freeThreads_ ==0) ? (N-m)/freeThreads_ : (N-m)/(freeThreads_-1) ;

对我来说,有 8 个线程可用。我有 2000 个类似的计算要执行。因此,我想运行 8 个线程,每个线程进行 2000/8 次计算。

但是我不知道实现 QtConcurrent 调用的最佳方法是什么。现在,我写

QFuture<double**> futurRand_ = QtConcurrent::run(randomPoint(),m_lower,m_upper);

然后是 futurRand_.result(); 我调整了方法 randomPoint(),最初返回一个单点 (double*),以便它可以返回一个双**,一组 2000/8 个点。

但我看到了 QConcurent::map() 的替代方案。有没有更有效的方法?与 QThread?

欢迎您在 Qt 中使用多线程!

问候。

- 编辑:为了更准确:地图有签名

 QFuture<void> QtConcurrent::map ( Sequence & sequence, MapFunction function )

或 altinatively 将迭代器作为其参数之一。但是,我在这里调用了一个每次都在同一个实例this上调用的函数。如何进行?还有哪些方便的方式?

4

0 回答 0