Boost 在触发事件中增强msm库NEBI

Boost 在触发事件中增强msm库NEBI,boost,state-machine,Boost,State Machine,当我们调用fsm.process_event('eventname') 如果发生转换,是否有方法返回true;如果未调用“no_transition”或发生异常,是否有方法返回false 谢谢因为到目前为止还没有人回答,所以我将发布我相当谦虚的建议。您可以尝试在调用fsm.process_event()之前和之后调用current_state()方法,并比较结果。但是,这不包括自转换或内部转换的情况,如果有其他替代方案,我也不会使用它(充其量只是一种黑客行为) 如果您试图捕获事件未被任何状态处理

当我们调用fsm.process_event('eventname')

如果发生转换,是否有方法返回true;如果未调用“no_transition”或发生异常,是否有方法返回false


谢谢

因为到目前为止还没有人回答,所以我将发布我相当谦虚的建议。您可以尝试在调用fsm.process_event()之前和之后调用current_state()方法,并比较结果。但是,这不包括自转换或内部转换的情况,如果有其他替代方案,我也不会使用它(充其量只是一种黑客行为)

如果您试图捕获事件未被任何状态处理且仅在其中传播的情况,则可以添加一个更底层的超级状态,该超级状态报告到达它的事件(即,它们传播通过的所有状态都忽略)

我曾经遇到过这样的情况,我需要知道某个事件是否真的做了什么,以及它是什么时候做的(可能是先推迟,然后再执行)。在这种情况下,我让MSM将“ACK”消息发送到外部队列,我不确定这是否适用于您的问题

据我所知,中断和状态机不能很好地混合在一起,我通常要么简单地吞下它们,要么根据上下文将它们转换成事件。您永远不应该允许sates(底层函数对象)抛出