QT qconcurrent run用法详细例子
时间: 2024-05-26 21:12:50 浏览: 74
QT的应用实例
可以的,关于QT qconcurrent run用法的详细例子,请参考以下示例代码:
// 定义一个 Worker 类
class Worker : public QObject
{
Q_OBJECT
public:
Worker() {}
public slots:
// 任务方法,接受一个参数,返回结果
int doTask(int n)
{
qDebug() << "Worker::doTask thread id:" << QThread::currentThreadId();
int result = n * 2;
QThread::msleep(3000); // 模拟任务耗时
return result;
}
};
void test()
{
qDebug() << "test thread id:" << QThread::currentThreadId();
// 创建 Worker 实例
Worker worker;
// 创建任务并发运行
QFuture<int> future = QtConcurrent::run(&worker, &Worker::doTask, 10);
// 等待任务完成并获取结果
future.waitForFinished();
int result = future.result();
qDebug() << "test result:" << result;
}
// main 函数
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << "main thread id:" << QThread::currentThreadId();
// 测试函数
test();
return a.exec();
}
在示例代码中,我们首先定义了一个 Worker 类,包含一个任务方法 doTask,它接受一个参数 n,并返回计算后的结果。在 test 函数中,我们通过 QtConcurrent::run 创建了一个任务并发运行,传递了实例对象和任务方法作为参数。最后,我们可以通过 QFuture 获取任务结果,并打印输出。注意,在任务方法中,我们使用了 QThread::msleep 方法模拟任务耗时,这是为了更好地展示 QtConcurrent 的并发特性。
希望这个例子能够帮助到你,如果还有其他问题,请随时提出。
阅读全文