我正在做一些OpenCV編碼,我正在處理一些圖像像素。但是,這個過程需要很多時間(圖片非常延遲),因爲我正在處理一個序列基礎上的每個顏色R G B。我認爲我可以通過進行多線程來加快速度,並且基於我以前的知識,線程池更有效。我看到一些線上的例子,但他們都需要使用QRunnable,我的實現應該比這更容易,因爲我只是想每次都通過不同通道的相同功能Qt Qthreadpool
任何想法!
我正在做一些OpenCV編碼,我正在處理一些圖像像素。但是,這個過程需要很多時間(圖片非常延遲),因爲我正在處理一個序列基礎上的每個顏色R G B。我認爲我可以通過進行多線程來加快速度,並且基於我以前的知識,線程池更有效。我看到一些線上的例子,但他們都需要使用QRunnable,我的實現應該比這更容易,因爲我只是想每次都通過不同通道的相同功能Qt Qthreadpool
任何想法!
如果你想在一個單獨的線程中執行一個函數,你可以使用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
以在執行完成時得到通知。
謝謝我嘗試了它,它使用了簡單的乘法方法,但它不適用於我的函數,我不知道爲什麼! – user573014
QRunnable沒有什麼複雜的。你可能只需要一個實現,它需要參數,以便指定要處理的通道。 – Mat