我正在使用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
以便在执行完成时得到通知。