2011-11-28 46 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