我有两个线程的应用程序。在第一个(主)线程中,我想生成一些消息并将其发送到第二个线程。是否存在阻塞等待传入消息的线程的方法(如embended OS中的队列(FreeRTOS,TNKernel等))?
while (true) {
waitQueue(TIMEOUT_INFINITY);
}
在waitQueue(TIMEOUT_INFINITY);
当前线程被阻塞,当在主线程中生成一些消息waitQueue
释放线程时。
答案 0 :(得分:1)
在Qt中执行此操作的自然方式是在线程中调用QThread::exec()
(这是QThread::run()
的默认实现)。
之后在该线程中执行QObject
实例(工作者对象)的插槽,可以使用QObject::moveToThread()
设置实例与新线程的亲缘关系,然后当信号连接到某个插槽时在该实例中发出,将在新线程中调用该槽。
实例化QThread提供了一个并行事件循环,允许在辅助线程中调用QObject槽。对QThread进行子类化允许应用程序在开始其事件循环之前初始化新线程,或者在没有事件循环的情况下运行并行代码。
请参阅QThread class,QObject class,Threads and QObject以及Qt event loops。
希望这会有所帮助。 。