我注意到使用 boost::msm 时,停止函数的行为与我预期的不同。可以说我愿意
sm state_machine;
state_machine.start();
state_machine.process_event(event_a()); pstate(state_machine);
std::cout << "stop sm" << std::endl;
state_machine.stop();
std::cout << "process_event after stop!" << std::endl;
state_machine.process_event(event_b()); pstate(state_machine);
我希望在停止之后不再处理任何事件。但是这里的输出是
entering: State Maschine
entering: state_a
leaving: state_a
action a->b
entering: state_b
-> B
stop sm
leaving: state_b
leaving: State Maschine
process_event after stop!
leaving: state_b
action b->a
entering: state_a
-> A
完整的例子在这里https://godbolt.org/z/o88ze6641
如果stop()不阻止状态机接受进一步的事件,它的用途是什么?我知道它会触发当前状态的 on_exit,但是离开后重新进入状态对我来说似乎很奇怪。