阻塞等待队列的线程

时间:2016-01-25 17:34:09

标签: c++ multithreading qt

我有两个线程的应用程序。在第一个(主)线程中,我想生成一些消息并将其发送到第二个线程。是否存在阻塞等待传入消息的线程的方法(如embended OS中的队列(FreeRTOS,TNKernel等))?

while (true) {
   waitQueue(TIMEOUT_INFINITY); 
}

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

1 个答案:

答案 0 :(得分:1)

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

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

  

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

请参阅QThread classQObject classThreads and QObject以及Qt event loops

希望这会有所帮助。 。