【问题标题】:Qthreadpool in QtQt中的Qthreadpool
【发布时间】:2012-01-07 21:45:48
【问题描述】:

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

任何想法!!!

【问题讨论】:

  • QRunnable 并不复杂。您可能只需要一个实现,它接受参数,以便您指定要处理的通道。

标签: multithreading qt opencv


【解决方案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 以便在执行完成时收到通知。

【讨论】:

  • 谢谢我试过了,它可以用一个简单的乘法方法,但它不能用我的函数我不知道为什么!
猜你喜欢
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 2013-12-09
  • 2023-04-09
相关资源
最近更新 更多