【问题标题】:Blocking thread for wait queue等待队列的阻塞线程
【发布时间】:2016-01-25 17:34:09
【问题描述】:

我有 2 个线程的应用程序。在第一个(主)线程中,我想生成一些消息并将其发送到第二个线程。是否有阻止线程等待传入消息的方法(如嵌入式操作系统(FreeRTOS、TNKernel 等)中的队列)?

while (true) {
   waitQueue(TIMEOUT_INFINITY); 
}

waitQueue(TIMEOUT_INFINITY);当前线程被阻塞,当在主线程产生一些消息waitQueue释放线程。

【问题讨论】:

  • 方法在哪里?标准 C++ 中没有这样的方法。其他库有这样的方法。
  • 他可能正在寻找QT event queues
  • 是的,我正在寻找 Qt。但我不知道如何使用它...

标签: c++ multithreading qt


【解决方案1】:

在 Qt 中执行此操作的自然方式是在线程中调用 QThread::exec()(这是 QThread::run() 的默认实现方式)。

之后要在该线程中执行QObject 实例(工作对象)的槽,您可以使用QObject::moveToThread() 设置实例与新线程的亲和性,然后当连接到该实例中某个槽的信号时发出,插槽将在新线程中调用。

实例化 QThread 提供了一个并行事件循环,允许在辅助线程中调用 QObject 槽。子类化 QThread 允许应用程序在启动其事件循环之前初始化新线程,或者在没有事件循环的情况下运行并行代码。

参见QThread classQObject classThreads and QObject,以及Qt event loops

希望这会有所帮助。 . .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2019-10-16
    • 2011-08-04
    相关资源
    最近更新 更多