По-моему, вы смешали все кучу.
Автомат состояний никаким боком не противоречит концепции программных таймеров и наоборот - это полностью параллельные понятия, существующие вне связи друг с другом.
Состояние может характеризоваться набором активных или наоборот, не активных таймеров.
Таймеры в свою очередь могут менять состояние.
И что из этого следует?
Ничего абсолютно не следует.
Если состояние программы изменилось, оно должно выполнить приведение таймеров к тому виду, как ему (состоянию) надо - остановить лишние и запустить нужные. Только и всего.
Вообще говоря, таймеры должны быть как бы локальными, т.е. модули программы должны оперировать только собственными таймерами, и не иметь понятия о том, что есть другие. Отсюда принципиальная невозможность проблемы, о которой вы упомянули: при любых состояниях программы не должно быть ситуаций, когда "мешают" таймеры от "другого состояния"...
И вы за деревьями леса не увидели... Суть моего принципа в том, как можно отделить объявление таймера от массива таймеров...
И, как мне кажется, у меня писанины раз в 10 меньше
Добавлено after 5 minutes 56 seconds:
Demiurg писал(а):Ни программист, ни диспетчер, ни ртос не знают, какие процессы болтаются на данный момент в очереди. И какие нужно прибить.
ну, предположим, программист обязан знать...
имхо, вы перегибаете палку, вознося автомат конечных состояний в абсолют, не подлежащий иной трактовке, кроме как вашей.
любая программа - подчеркиваю жирным красным цветом -
ЛЮБАЯ ПРОГРАММА - это воплощение конечного автомата. даже та, в которой состояния явно не просматриваются. и нет нужды всегда выделять состояния в самостоятельные сущности кода. понимаете? увлекшись формальным приведением любой программы в ЯВНО ВЫРАЖЕННЫЙ автомат состояний вы ничего, кроме напрасного усложнения кода, не делаете.