如何使用cpp中的QThread使用一个对象运行同一类的两个线程?

Posted

技术标签:

【中文标题】如何使用cpp中的QThread使用一个对象运行同一类的两个线程?【英文标题】:how to run two threads of same class using one object using QThread in cpp? 【发布时间】:2016-06-18 13:56:53 【问题描述】:

我有一个类,其成员函数是 VideoCapture 和 VideoWrite。 我想运行两个线程来并行执行这两个过程。 我观察到我们每次都需要创建一个类对象来运行不同的线程。 有什么办法不每次都创建不同的类对象吗?

【问题讨论】:

【参考方案1】:

你不能真正在两个不同的线程中运行一个类——通常你将一个类实例移动到一个线程中。您可能最好创建两个单独的类,一个读取器/捕获类和一个写入器类,并将每个类放在自己的线程中......这非常简单有效。

如果您真的想将课程保持在一起,您可以使用 QtConcurrent 来实现这一点 - 取决于您的课程的工作方式。您可以在 qtconcurrent 中运行您的捕获/写入函数(或任何重处理器功能)以减轻繁重的工作 - 而事件处理/事件循环只能在主线程(甚至是一个单独的线程)中完成将其完全远离主线程)。见:

run member function qith QtConcurrent

QtConcurrent

【讨论】:

以上是关于如何使用cpp中的QThread使用一个对象运行同一类的两个线程?的主要内容,如果未能解决你的问题,请参考以下文章

如何停止运行阻塞 Forever 循环的 QThread?

Qt - QThread(翻译帮助文档)

Qt on Python 中的 QThread

了解 qthread 子类的运行方法和线程上下文

QThread 对象作为工作类的成员

等待QThread时UI会阻塞/如何正确使用QThread