QT 并行编程
QT Parallel Programming
我编写了自己的合并排序,在一个线程中工作正常,但是当我尝试并行运行它时,我遇到了错误。
void GameModel::mergesort_mt3(QVector<QPair<int,Matrix>>::iterator begin,
QVector<QPair<int,Matrix>>::iterator end,
unsigned int N)
{
auto len = std::distance(begin, end);
if (len <= 1024 || N < 2)
{
std::sort(begin,end);
return;
}
QVector<QPair<int,Matrix>>::iterator mid = std::next(begin, len/2);
//auto fn = QtConcurrent::run(mergesort_mt3, begin, mid, N-2 );
mergesort_mt3(begin, mid, N-2);
mergesort_mt3(mid, end, N-2);
//fn.waitForFinished();
std::inplace_merge(begin, mid, end);
}
当我使用注释的代码时,出现此错误:
error: no matching function for call to 'run(<unresolved overloaded function
type>, QPair<int, QPair<QVector<QVector<int> >, int> >*&, QPair<int,
QPair<QVector<QVector<int> >, int> >*&, unsigned int)'
auto fn = QtConcurrent::run(mergesort_mt3, begin, mid, N-2 );
^
In file included from
C:/Qt/5.9.1/mingw53_32/include/QtConcurrent/QtConcurrent:14:0,
from ..Game15model.cpp:2:
note:
candidate: template<class T> QFuture<T> QtConcurrent::run(T (*)())
QFuture<T> run(T (*functionPointer)())
知道吗,我做错了什么?
这应该是这样的
auto fn = QtConcurrent::run(this, GameModel::mergesort_mt3, begin, mid, N-2 );
请参阅 Qt 成员函数。
相关文章:
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 如何对并行键盘输入进行编程
- 如何解决在使用动态 2D 数组进行矩阵乘法的 MPI 进行并行编程时的问题
- 锁定如何在并行编程中工作?
- OpenMP 并行编程基于线程数与执行时间的关系
- 如何将GDB与OpenMP和并行编程使用
- 使用Visual Studio 2017的并行编程
- QT 并行编程
- 使用C 异步进行并行编程
- 带有多个线程的锁在C 中并行编程
- 用openMP进行并行编程
- 使用并行阵列的初学者编程学生
- GTX 550 Ti显卡支持动态并行编程
- 并行CUDA编程
- c++并行编程错误
- 如何在并行编程中收集从机到主机返回的值
- 如何在图问题中应用并行编程
- 内存使用并行编程
- 在TBB中使用递归、基于任务的并行编程获得不同的输出
- 什么是改进并行/分布式编程的好项目