Qtreadpool在Qt

时间:2011-11-28 12:24:04

标签: multithreading qt opencv

我正在使用OpenCV进行一些编码,我正在处理一些图像像素。然而,这个过程需要花费很多时间(图片非常延迟),因为我正在处理序列基础上的每个颜色R G B.我认为通过多线程可以让它更快,并且基于我之前的知识,Threadpool更有效。我在网上看到了一些例子,但是他们都需要使用QRunnable,我的实现应该比那更容易,因为我只是想每次都用不同的通道传递相同的功能

任何想法!!!

1 个答案:

答案 0 :(得分: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以便在执行完成时收到通知。