Описание тега state-machine

Конечный автомат - это вычислительная модель, используемая для разработки компьютерных программ и последовательных логических схем. Он определяет, что объект в программе может находиться в одном из конечного числа состояний. Состояние, в котором он находится в любой момент времени, называется текущим состоянием. Он может переходить из одного состояния в другое, когда инициируется запускающим событием или условием; это называется переходом.

Конечный автомат - это абстрактная машина, которая обладает

  • Состояние (что делает система)
  • Переходы (какие входные данные вызывают какие состояния возникают)
  • Действия при входе (что происходит при входе в состояние)
  • Действия выхода (аналогично действиям входа)

В результате система может динамически изменять свое поведение в зависимости от того, что она делает в данный момент и какие входные данные она получает - это позволяет конечным автоматам моделировать многие типы систем. (Знакомый пример - Regex - Perl, Python, Tcl, .NET и большинство других реализаций используют конечный автомат внутри).

Например, рассмотрим принтер, который может либо ждать задания, либо печатать его (состояния), и может начать печать, когда задание получено, и начать ожидание, когда оно будет выполнено с текущим заданием (переходы). Отправить уведомление - это действие выхода для состояния "Печать", чтобы уведомить очередь печати о том, что это выполнено.

SDL-описание принтера

(Приведенная выше диаграмма находится в формате SDL - UML также популярен для представления диаграмм состояний).

Связанные теги

coyote - фреймворк для асинхронного программирования с открытым исходным кодом Coyote