我正在做一些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