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

时间:2014-05-03 15:40:15

标签: c++ multithreading qt

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

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

1 个答案:

答案 0 :(得分:2)

您可以使用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();