Boost msmステートマシンを使用したいのですが、それがどのように機能するか想像するのに苦労しています。状態が2つ(s1、s2)しかない場合、s1からs2に移動するには、イベントe1を起動する必要があり、元に戻すには、別のe2が必要です。e1とe2は、それぞれs1とs2内からのみ起動できます。
ここでmain()で、ステートマシン(start())を起動することから始めます。その後、1分ごとにステートマシンに戻るが、離れた場所からピックアップする必要があるwhileループがあります。
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()を実装するにはどうすればよいですか?