Qt多线程QtConcurrent类
来源:互联网 发布:淘宝客服每日工作内容 编辑:程序博客网 时间:2024/06/15 09:39
最近在学习Qt多线程,发现QtConcurrent代码简单粗暴,尝试着用。
发现并行计算的函数好像不能使类方法:
#include <QtWidgets>
#include <QtConcurrent>
using namespace QtConcurrent;
const int iterations = 20;
void spin(int &iteration)
{
const int work = 1000 * 1000 * 40;
volatile int v = 0;
for (int j = 0; j < work; ++j)
++v;
qDebug() << "iteration" << iteration << "in thread" << QThread::currentThreadId();
}
int main(int argc, char **argv)
{
QApplication app(argc, argv);
// Prepare the vector.
QVector<int> vector;
for (int i = 0; i < iterations; ++i)
vector.append(i);
// Create a progress dialog.
QProgressDialog dialog;
dialog.setLabelText(QString("Progressing using %1 thread(s)...").arg(QThread::idealThreadCount()));
// Create a QFutureWatcher and connect signals and slots.
QFutureWatcher<void> futureWatcher;
QObject::connect(&futureWatcher, SIGNAL(finished()), &dialog, SLOT(reset()));
QObject::connect(&dialog, SIGNAL(canceled()), &futureWatcher, SLOT(cancel()));
QObject::connect(&futureWatcher, SIGNAL(progressRangeChanged(int,int)), &dialog, SLOT(setRange(int,int)));
QObject::connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &dialog, SLOT(setValue(int)));
// Start the computation.
futureWatcher.setFuture(QtConcurrent::map(vector, spin));
// Display the dialog and start the event loop.
dialog.exec();
futureWatcher.waitForFinished();
// Query the future to check if was canceled.
qDebug() << "Canceled?" << futureWatcher.future().isCanceled();
}
如上面程序的 futureWatcher.setFuture(QtConcurrent::map(vector, spin));这一句,
spin后面是不带参数的,当它不是类的方法时,上面这句调试能够通过,但当其位类的方法时,调试提示说缺少参数,
难道是类方法就不行?!
明晚接着研究
- Qt多线程QtConcurrent类
- QtConcurrent Qt处理多线程
- Qt多线程基础(QThread、QtConcurrent等)
- Qt多线程:QtConcurrent配合lambda表达式(实例)
- QT小程序:QtConcurrent
- Qt 之 QtConcurrent
- QT 线程之 QtConcurrent::run()
- 使用QtConcurrent编写多线程程序
- QtConcurrent
- QtConcurrent
- Qt 线程基础(QThread、QtConcurrent等)
- Qt 线程基础(QThread、QtConcurrent等)(zz)
- Qt 线程基础(QThread、QtConcurrent等)
- Qt 线程基础(QThread、QtConcurrent等)
- Qt 线程基础(QThread、QtConcurrent等)
- Qt 线程基础(QThread、QtConcurrent等)
- Qt 线程基础(QThread、QtConcurrent、QThreadPool等)
- Qt 线程基础(QThread、QtConcurrent等)
- 华为机试—字符串替代(aa-bc)
- JavaScript OOP基础知识
- 【BZOJ1513】【POI2006】Tet-Tetris 3D 二维线段树+标记永久化
- iOS汉字转拼音
- live555——VS2010 /VS2013 下live555编译、使用及测试
- Qt多线程QtConcurrent类
- Android View getX getLeft getTranslationX layoutparams.leftMargin的值
- C++标准输入流详解
- 《汇编语言》(王爽著)第3章寄存器(内存访问)_习题解答
- Unity 触摸屏缩放
- C++异常及错误处理
- 周末加班是家常便饭,这社会不只是程序员命苦,还有比我们更苦命的娃子,抽这个蛋疼的时间上传JBPM资料
- JavaScript之字符串与数组
- MySQL自学篇(十一)