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