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 的情況下,我們無法取消函式執行。