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

任何的想法 !!!

最佳答案

如果要在单独的线程中执行功能,可以使用 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 以便在执行完成时得到通知。

10-06 06:22