Qt在两个不同的线程中运行同一对象的两个方法

Qt run 2 methods of the same object in two different threads

本文关键字:两个 方法 对象 运行 Qt 线程      更新时间:2023-10-16

我有一个带有一些属性和两个方法的类。这些方法需要相同的属性,并且应该从程序开始运行直到程序终止。方法不需要与GUI线程交互。

目前我只知道如何在Qt中移动一个完整的对象到另一个线程,但我需要并行运行这两个方法。有办法吗?

你可以使用QtConcurrent::run在一个单独的线程中运行函数

QFuture<void> future1 = QtConcurrent::run(this,&MyClass::Function1, arg1 );
QFuture<void> future2 = QtConcurrent::run(this,&MyClass::Function2, arg1 );

你可以检查异步计算的状态,像这样:

if(future1.isRunning())
{
    // It is currently running
}

或者等待它完成:

future1.waitForFinished();