gpt4 book ai didi

c++ - 等待队列阻塞线程

转载 作者:行者123 更新时间:2023-11-30 05:32:50 24 4
gpt4 key购买 nike

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

while (true) {
waitQueue(TIMEOUT_INFINITY);
}

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

最佳答案

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

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

Instantiating a QThread provides a parallel event loop, allowing QObject slots to be invoked in a secondary thread. Subclassing a QThread allows the application to initialize the new thread before starting its event loop, or to run parallel code without an event loop.

参见 QThread class , QObject class , Threads and QObject , 以及 Qt event loops .

希望这对您有所帮助。 . .

关于c++ - 等待队列阻塞线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34998681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com