gpt4 book ai didi

c++ - Boost MSM - 更清晰

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:06 28 4
gpt4 key购买 nike

我想使用 boost msm 状态机,但我很难想象它是如何工作的。假设我们只有 2 个状态(s1,s2),要从 s1 到 s2,您需要触发事件 e1 并返回,您需要另一个 e2。e1 和 e2 只能分别从 s1 和 s2 中触发。

现在在 main() 中,我首先启动状态机 (start()),然后我有一个 while 循环,每 1 分钟将返回到状态机,但必须从它离开的地方开始。即

main()
{
MSM.start(); //start state machine

while (a_condition)
{
ProcessInputsfromIO();
Go_backtoStatemachine(); //how can i do this?
delay(1min)
}
MSM.stop();
}

所以基本上当一个状态完成执行时,状态机将退出,然后延迟 1 分钟,然后 while 循环将需要将我带回退出前的状态,或者我认为这就是我们的方式应该实现一个状态机。

我的要求是否与众不同?如果是,那么人们如何实现非阻塞状态机?如果不是,那我该如何实现 Go_backtoStatemachine()?

最佳答案

这里有一个相当简单的例子:

MSM Simple Tutorial

A state machine是一个抽象的概念。它有状态,事件等。它并没有真正的阻塞,非阻塞等概念。在Boost MSM的框架内你可以调用start()进入初始状态,process_event() 注入(inject)事件,stop() 停止。状态机简单地捕获系统状态,并可以在系统更改状态时调用一些函数。您将如何使用它取决于应用程序。

关于c++ - Boost MSM - 更清晰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9560333/

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