阻塞等待队列的线程

Blocking thread for wait queue

本文关键字:线程 等待队列      更新时间:2023-10-16

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

while (true) {
   waitQueue(TIMEOUT_INFINITY); 
}

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

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

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

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

请参阅 QThread 类、QObject

类、线程和 QObject,以及 Qt 事件循环。

希望这有帮助。。。