gpt4 book ai didi

c++ - 管理异步通信 : how to examine response received in another thread

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:51 24 4
gpt4 key购买 nike

我有一个调度线程和一个监听线程。当我发送命令时,我想在发送后续命令之前等待响应。此外,我需要先检查响应,然后才能继续执行第二条命令,其中最重要的是确认已收到响应并且一切正常。我的伪代码如下:

void MainWindow::downloadData()
{
dispatcher->getInfo(); // sends command

// QString response = receiver->response() // idealy I would like to check response but since its async, i can't really do that!

dipatcher->askData(); // the 2nd command and so forth

}

有什么优雅的方法可以解决这个问题吗?我能想到的唯一方法是如果我使用相同的线程并且所有调用都被阻塞,但这不一定是一个好的解决方案。

在 Qt 中,我可以使用信号和槽以级联方式连接它们,因此当第一个信号被触发时,它会启动整个操作序列(每个槽都会发出一个新信号)但看起来也很脏。

最佳答案

FSM 是处理异步事件和处理基于这些事件的操作链/图的最可靠方法之一。 Qt 通过其 Qt-State machine framework 为实现 FSM 提供了基础.我建议走这条路。不幸的是,Qt 为 FSM 提供的所有示例都涉及 GUI 和动画。

FSM 方法的优势在于,FSM 既可以表示为图形,也可以表示为表格。第一个选项有助于理解,第二个选项有助于验证,因为没有无限循环和“死胡同”。

我在 Qt-FSM 框架的基础上构建了自己的框架,用于在领域特定语言中定义 FSM。我用它来控制一台复杂的机器,它有几个异步工作的传感器 Actor 。使用 DSL 帮助我实现更高的抽象 - 在 FSM 图的抽象级别。

关于c++ - 管理异步通信 : how to examine response received in another thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30945561/

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