QtConcurrent Run

如果你发现管理 QThreads 和低级原语(如互斥锁或信号量太复杂),Qt Concurrent 命名空间就是你正在寻找的。它包括允许更高级别线程管理的类。

我们来看看 Concurrent Run。QtConcurrent::run() 允许在新线程中运行函数。你什么时候想用它?当你有一些长操作并且你不想手动创建线程时。

现在的代码:

#include <qtconcurrentrun.h>

void longOperationFunction(string parameter)
{
    // we are already in another thread
    // long stuff here
} 

void mainThreadFunction()
{
    QFuture<void> f = run(longOperationFunction, "argToPass");
    f.waitForFinished();
}

事情很简单:当我们需要在另一个线程中运行另一个函数时,只需调用 QtConcurrent::run,传递函数及其参数即可!

QFuture 呈现了我们异步计算的结果。在 QtConcurrent::run 的情况下,我们无法取消函数执行。