Диаграмма состояний Boost, связь между отдельными FSM

скажем, я создал несколько отдельных классов FSM, унаследованных от диаграммы состояний. Затем я создаю экземпляры этих объектов и хочу, чтобы они могли вызывать события друг в друге; например, первый FSM войдет в состояние «ON» и вызовет событие во втором FSM (например, process_event(EvSomething()) ).

Каким будет лучший способ сделать это?

Большое Вам спасибо,

Фабрицио


person fabrice79    schedule 05.09.2012    source источник
comment
Являются ли FMS синхронными или асинхронными?   -  person Igor R.    schedule 05.09.2012


Ответы (1)


Основная мотивация для асинхронных конечных автоматов это именно тот сценарий, который вы описываете. Итак, я бы посоветовал вам преобразовать ваши машины в асинхронные. Пример см. здесь.

person Community    schedule 12.09.2012
comment
Да, я понял это после комментария Игоря. Разбираемся с этим прямо сейчас. В любом случае, если автоматы не работают в двух направлениях (они просто запускают process_event в других автоматах, но ничего не ожидают в ответ), будут ли они правильно работать синхронно? - person fabrice79; 13.09.2012
comment
@fabrice79: Проблема в том, что process_event данного объекта подкласса state_machine не является реентерабельным. Итак, пока вы гарантируете, что это ограничение не нарушается, все должно работать так, как ожидалось. - person ; 14.09.2012