Boost MSM кто использовал?
От: пффф  
Дата: 25.09.24 13:38
Оценка:
Привет

Захотел тут посмотреть на это чудо.
Дока по бусту убогая в принципе, всё по отдельным страницам лежит, постоянно прыгать туда сюда задолбало.
Ладно, пролистал я доку по MSM — ну там основные сведения, то, сё, что такое FSM, состояния, события, переходы. Ну, фронтенды там разные, ок. Но вот как взять и просто запустить какой-нибудь пример — я что-то не понял. Есть ли в природе такое?
Re: Boost MSM кто использовал?
От: kov_serg Россия  
Дата: 25.09.24 19:30
Оценка: 2 (1)
Здравствуйте, пффф, Вы писали:

П> Но вот как взять и просто запустить какой-нибудь пример — я что-то не понял. Есть ли в природе такое?


https://www.boost.org/doc/libs/1_85_0/libs/msm/doc/HTML/examples/SimpleTutorial.cpp ?
https://www.boost.org/doc/libs/1_85_0/libs/msm/doc/HTML/examples
Re: Boost MSM кто использовал?
От: landerhigh Пират  
Дата: 29.09.24 21:31
Оценка: 6 (2) +1
Здравствуйте, пффф, Вы писали:

П>Ладно, пролистал я доку по MSM — ну там основные сведения, то, сё, что такое FSM, состояния, события, переходы. Ну, фронтенды там разные, ок. Но вот как взять и просто запустить какой-нибудь пример — я что-то не понял. Есть ли в природе такое?


Как автор похожего фреймворка (код закрытый, сорри), имею мнение — MSM и иже с ними не есть правильный метод реализации КА на плюсах. Таблица переходов в явном виде коде — идея интересная, но ИМХО скорее чаще, чем нет, не самая удобная.
Чаще всего нам приходится иметь дело не с хрестоматийным КА, где переходы переключают логику (в автомат брошена монетка/автомат ждет монетки), а с асинхронным алгоритмом, где последовательно выполняются несколько асинхронных операций, и результат их выполнения определяет следующий шаг алгоритма.
Подход, реализованный в MSM, заставляет разбить асинхронный алгоритм на кучу несвязанных отдельных функций, при этом проверка результатов выполнения каждой асинхронной операции уезжает в таблицу переходов.

Для реализации конечных автоматов лучше использовать корутины. Причем, duff device на стероидах из boost::asio подходит очень хорошо.
www.blinnov.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.