ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
16 июля
1011688 Топик полностью
Cкpипaч, пророк (12.06.2020 10:12, просмотров: 757) ответил fk0 на И получится Quantum Leap он же state-machine.com. И сразу будут спрашивать, "а что если очередь событий переполнится". И ведь переполняется бывает. С очередью есть одна принципиальная проблема: события из очереди обрабатываются в порядке очереди. И если она одна на всё, то возможен "шторм событий", когда некоторые события попавшие на вход генерируют достаточно большое количество внутренний событий, и так рекурсивно. И если на вход поступает сразу много "проблемных" событий,
Стоп. Основная идея машины состояний - разделение входов, выходов и не-асинхронность. Иначе гонки можно и без очередей получить. 

Повторюсь, введение сущностей, которые "знают кому нужно" не является абсолютно необходимым.


ЛЕММА: Правильно спроектированная система конечных автоматов - максимально эффективна.

Любой "внешний" по отношению к ней трюк, эффективнее реализуется внутри нее.

Но требует "дисциплины проектирования" (и это единственная проблема).


Под "очередью событий" понимаю особый тип входа конечного автомата.

Никаких "подписок" и "активаций", да вопрос необходимой глубины очереди - реален,

но если не лезть создавать глобальные абстрактные сущности, а проектировать

сугубо в прикладных контекстах, то и ответы легко найдутся (бесконечность бывает только среди абстракций).


Да, теоретически хотелось бы "разгрузить прикладного программиста" и "сделать за него всю работу".

На практике это обычно выливается только и исключительно в пустые абстракции.

События не появляются "сами собой", их генерируют в абсолютно таком же if-е, только перенесенном

со стороны приемника, на сторону источника (с дополнительными издержками на "сигнализацию").

Ни одно животное не пострадало Ни одного такта экономии!

... но не любой ценой.