Новый вопрос, пожалуйста, открой мне, как я борюсь с этим.
Я хочу использовать конечный автомат 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 ()?