Настройка поведения системы дискретных событий с помощью событий и действий события

Можно настроить поведение системы дискретных событий путем определения событий и действий событий.

Вы можете:

  • Планируйте события

  • Задайте действия события в ответ на события

  • Инициализация событий

  • Отменить события

Типы событий и действия событий

Типы событий

Система дискретных событий может иметь эти типы событий и их цели.

Тип событияЦельЦель
eventAcquireResourceСущностьРазрешить сущности получить один или несколько ресурсов.
eventDestroyСущностьУничтожить существующую сущность в хранилище.
eventForwardСущностьПереместите сущность из его текущего хранилища в другой порт хранения или вывода.
eventIterateХранениеИтерация и обработка каждой сущности в хранилище.
eventReleaseResourceСущностьРазрешить сущности деблокировать один или несколько ресурсов.
eventReleaseAllResourcesСущностьРазрешить сущности освобождать все ранее приобретенные ресурсы.
eventTestEntryХранениеСоздайте событие, указывающее, что политика приемки хранилища изменена, и хранилище повторно проверяет поступающие сущности.
eventTimerСущностьСоздайте событие таймера.
eventGenerateХранениеСоздайте сущность внутри хранилища.
  • Форвардные события

    Если из-за блокировки не удается выполнить событие переадресации, событие переадресации остается активным. Когда пространство становится доступным, система дискретных событий перепланирует форвардное событие для немедленного выполнения.

  • События разметки

    Можно запланировать несколько событий одного типа для одного актёра. При использовании нескольких событий одного типа используйте теги для различения событий. Для примера сущности может иметь несколько таймеров с различными тегами. Когда срок действия одного таймера истекает, можно использовать tag аргумент timer метод, чтобы дифференцировать, какой это таймер. Дополнительные сведения см. в разделе Пользовательский блок хранения сущностей с несколькими событиями таймера.

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

Действия события

Когда происходит событие, система дискретных событий реагирует на него, вызывая соответствующее действие. Реализуйте эти действия как методы системного object™. В этой таблице перечислены каждый метод действия и событие запуска.

Действие событияСобытие запускаЦель
blockedeventForwardВызывается, если при выполнении события forward сущность не может уйти из-за блокировки из целевого хранилища.
destroyeventDestroyВызывается до того, как сущность будет уничтожает и удаляема из хранилища.
entryeventForwardВызывается запись сущности.
exiteventForwardВызывается выход сущности. Когда сущность переадресовывается из хранилища 1 в хранилище 2, выходное действие хранилища 1 а затем действие входа хранилища 2 вызываются.
generateeventGenerateВызывается после создания новой сущности внутри элемента хранилища.
iterateeventIterateПосле выполнения события Iterate этот метод вызывается для каждой сущности от передней до задней части хранилища с опцией раннего завершения. Если сущности необходимо использовать из-за изменений ключевых значений, использование происходит после завершения всей итерации.
resourceAcquiredeventAcquireResourceВызывается после успешного приобретения ресурса. Получение ресурса успешно только в том случае, если получены все указанные ресурсы.
resourceReleasedeventReleaseResourceВызывается после релиза ресурса.
testEntryeventTestEntryВызывается после события ввода теста.
timereventTimerВызывается при выполнении события таймера сущности.

Инициализация событий

Используйте эти методы для инициализации пустых массивов и событий системы дискретных событий.

Тип событияЦель
initEventArrayИнициализируйте массив событий.
initResourceArrayИнициализируйте массив спецификаций ресурсов.
setupEventsИнициализируйте события генерации сущности.

Отмена ранее запланированных событий

Используйте эти методы для отмены ранее запланированных событий системы дискретных событий.

Тип событияЦель
cancelAcquireResourceОтменить ранее запланированное событие приобретения ресурса
cancelDestroyОтмена ранее запланированного события уничтожения сущности.
cancelForwardОтменить событие переадресации сущности.
cancelGenerateОтмена ранее запланированного события генерации сущностей.
cancelIterateОтмена ранее запланированного итерационного события.
cancelTimerОтмена ранее запланированного события таймера.

Идентификаторы событий

Существует два различных идентификатора событий, предоставляемых matlab.DiscreteEventSystem класс.

  • Тег - Используйте tag как входной параметр для метода.

    event1 = obj.eventTimer('mytimer1', 2);
    event2 = obj.eventTimer('mytimer2', 5);

    Здесь, mytimer1 и mytimer2 используются как теги для обращения к этим двум событиям таймера.

  • Адресат - Используется для идентификации событий переадресации.

    event1 = obj.eventForward('storage', 2, 0.8);
    event2 = obj.eventForward('output', 1, 2);

    Здесь, storage и output используются для различения двух форвардных событий.

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

Тип событияИдентификация
eventAcquireResourceТэг
eventGenerateТэг
eventIterateТэг
eventReleaseResourceТэг
eventReleaseAllResourcesТэг
eventTimerТэг
eventForwardМесто назначения

Примечание

Если вы задаете событие, которое еще не выполнено, и второе событие с тем же типом и идентификатором, первое событие заменяется вторым.

См. также

| | | | | | | |

Похожие темы