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

标签 c++ multithreading qt

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

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

最佳答案

您可以使用 QtConcurrent::run,它在单独的线程中运行函数。

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

您可以检查这些 futures 所代表的异步计算的状态,例如:

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

或者等待它完成:

future1.waitForFinished();

关于c++ - Qt在两个不同的线程中运行同一个对象的2个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23446492/

相关文章:

multithreading - GO:在简单的 tcp 服务器上超过 10000 个线程?

c++ - 像 C 的 printf 一样向 QTextEdit 显示格式化文本

c++ - 如何在单独的线程上设置 QSerialPort?

c++ - 在另一个程序中使用一个程序中的变量

c++ - Kinect 2 - AcquireLatestFrame() 大部分时间都失败

java - java中从另一个线程调用方法

c++ - Qt::QFileDialog 在第二次调用时使我的应用程序崩溃

c++ - constexpr 标准仿函数的正确用法是什么?

c++ - 使用 iconv 的 UTF8 转换输出不正确

python - 如何并行运行函数?