Как ведут себя несколько событий с отсрочкой в Boch Statechart?Множественные отложенные события в файле состояния Boost
Предположим, у меня 4 состояния и 3 события. В неотсроченных переходах выглядят следующим образом:
S1 - (E1) -> S2 - (E2) -> S3 - (Е3) -> S4
Конечный автомат начинается в S1. Теперь события публикуются в следующем порядке: E2, E3, E1.
Я хочу, чтобы конечный автомат достиг S4 в результате этой последовательности событий. Что мне нужно сделать для этого?
- Я, очевидно, должен отложить E2 и E3 в S1.
- Возможно, мне также придется отложить E3 на S2? Я думаю, иначе он будет сброшен, когда будет достигнута S2.
Я предполагаю, что эта часть документации: http://www.boost.org/doc/libs/1_55_0/libs/statechart/doc/reference.html#process_event содержит ответ на вопрос, но он очень техничен (скорее описание реализации, чем семантики - учебник не понятнее либо), и содержит много ссылок , так что это трудно понять наверняка.
Спасибо за хорошее объяснение. Так что не нужно снова отложить E3 в S2, как STRUCT S2: СБН :: simple_state { ЬурейеЕ MPL :: Список < СБН :: переходную , подкожно :: отсрочек < E3 > > реакции; }; ? –
@Jens Muller: Нет, однажды отложенное событие остается во внешней очереди, которое будет выполняться каждый раз, когда произойдет новый переход состояния. Они останутся в очереди до тех пор, пока не обработаются каким-либо одним из последующих обработчиков событий. –
@DKG Предположим, что порядок событий - E1, E3, E2. Тогда мы находимся в S2, когда получаем событие E3. Отложено ли это? Если нет, можно ли E3 также отложить в S2? –