2010-10-22 2 views
5

Я хотел бы смоделировать конечный автомат управляемых событий в C, как предложено здесь: http://en.wikipedia.org/wiki/Event-driven_finite_state_machineуправляемый событиями конечный автомат + потоки: как?

Но я также хотел бы «внешние» события, которые будет обрабатываться в различных потоках.

Могу ли я найти такой код где-нибудь? Или советы?

ответ

6

Очереди сообщений - это способ решить вашу проблему.

Если вы хотите отправить свой конечный автомат внешними событиями из других потоков, они могут записывать эти события в очередь сообщений, которая будет считана вашим конечным автоматом.

Если вы хотите, чтобы другие действия запускались с действий с вашего конечного автомата, он может записывать в различные очереди сообщений, каждый из которых связан с потоком, который будет считываться из его MQ.

Один из недостатков заключается в том, что события сортируются в хронологическом порядке. Если ваш государственный аппарат не настроен обрабатывать событие, которое он просто читает из очереди, вам нужно решить, что делать с этим событием: уничтожить его, вернуть его в очередь, запомнить его для использования в будущем ...

+0

Я с интересом прочитал ваш последний параграф о заказе события. Можете ли вы случайно указать мне на примеры, источники или статьи об управлении очередью событий в государственных машинах? – BiAiB

5

Возможно, Quantum Framework - это то, что вы ищете? См. http://state-machine.com/ для получения дополнительной информации. Есть порты для многих микроконтроллеров, а также для Linux и окон.

+0

Hi squeakySquirrel. Да, я также открыл этот сайт и его книгу. Интересно ! Спасибо. JCLL – JCLL

+0

Я использую QF в коммерческой среде, как с потоками, так и без них. Сначала это было неудобно, но теперь я не могу себе представить, как писать критически важный код. В отличие от специальных реализаций, QPC рассчитан на масштабирование, не становясь большим беспорядком. –