2011-11-28 30 views
0

我正在做一些OpenCV編碼,我正在處理一些圖像像素。但是,這個過程需要很多時間(圖片非常延遲),因爲我正在處理一個序列基礎上的每個顏色R G B。我認爲我可以通過進行多線程來加快速度,並且基於我以前的知識,線程池更有效。我看到一些線上的例子,但他們都需要使用QRunnable,我的實現應該比這更容易,因爲我只是想每次都通過不同通道的相同功能Qt Qthreadpool

任何想法!

+0

QRunnable沒有什麼複雜的。你可能只需要一個實現,它需要參數,以便指定要處理的通道。 – Mat

回答

1

如果你想在一個單獨的線程中執行一個函數,你可以使用QtConcurrentRun機制。

假設你有一個函數f用一個整數作爲參數,在一類A

class A { 
public: 
    f(int i); 
} 

現在如果你想異步調用的函數,從不同的類,你可以這樣做:

A a; 
QFuture<void> future1 = QtConcurrent::run(a, &A::f, 1); // Call it with argument 1 
QFuture<void> future2 = QtConcurrent::run(a, &A::f, 2); // Call it with argument 2 

您可以使用QFutureWatcher以在執行完成時得到通知。

+0

謝謝我嘗試了它,它使用了簡單的乘法方法,但它不適用於我的函數,我不知道爲什麼! – user573014