主要内容

使用事件和事件操作自定义离散事件系统行为

您可以通过定义事件和事件操作来自定义离散事件系统的行为。

您可以:

  • 安排活动

  • 响应事件定义事件操作

  • 初始化事件

  • 取消事件

事件类型和事件动作

事件类型

离散事件系统可以具有这些事件类型及其目标。

事件类型 目标 目的
eventAcquireResource 实体 允许实体获取一个或多个资源。
EventDestroy. 实体 销毁存储中的现有实体。
事实前 实体 将一个实体从其当前存储器移到另一个存储器或输出端口。
eventiterate. 贮存 迭代并处理每个实体的存储。
EventReleAseresource. 实体 允许实体释放一个或多个资源。
EventReleAleLresources. 实体 允许一个实体释放之前获得的所有资源。
EventTestentry. 贮存 创建一个事件以指示存储验收策略已更改,并且存储重新测试到达实体。
Eventtimer. 实体 创建计时器事件。
赛事 贮存 在存储内创建实体。
  • 前进事件

    如果由于阻塞而导致的转发事件失败,则转发事件仍然处于活动状态。当空间变为可用时,离散事件系统重新安排转发事件以立即执行。

  • 标记事件

    您可以为同一actor计划多个相同类型的事件。使用相同类型的多个事件时,请使用标签区分事件。例如,实体可以具有具有不同标记的多个定时器。当一个计时器到期时,您可以使用标签争论计时器方法来区分它是哪个计时器。有关更多信息,请参见带有多个计时器事件的自定义实体存储块

    如果在同一actor上安排两个在同一标记上的事件,则稍后的事件将替换第一个事件。如果您安排了两个具有不同标签的事件,则离散事件系统单独调用它们。

事件行动

发生事件时,通过调用相应的操作,离散事件系统会响应它。将这些操作实现为System Object™方法。此表列出了每个操作方法和触发事件。

事件诉讼 触发事件 目的
阻塞 事实前 如果在执行前向事件时,实体由于被目标存储阻塞而不能离开,则调用此函数。
破坏 EventDestroy. 在实体被销毁并从存储中删除之前调用。
条目 事实前 呼吁实体条目。
退出 事实前 呼吁实体退出。从存储中转发实体时1存储2,存储的退出动作1然后是存储的输入动作2被称为。
产生 赛事 在存储元素中创建新实体后调用。
迭代 eventiterate. 在执行迭代事件时,通过早期终止的选项,将该方法从存储前到后部的每个实体调用。如果由于键值变化需要采取措施,在整个迭代完成后,求助。
resourceacquired. eventAcquireResource 在成功获取资源后调用。只有当获取了所有指定的资源时,资源获取才会成功。
resourcereleas EventReleAseresource. 在资源释放后调用。
testEntry EventTestentry. 在测试条目事件后调用。
计时器 Eventtimer. 在执行实体的计时器事件时调用。

初始化事件

使用这些方法初始化离散事件系统的空数组和事件。

事件类型 目的
initeventarray 初始化事件数组。
initResourceArray 初始化资源规范数组。
setupevents. 初始化实体生成事件。

取消以前的计划事件

使用这些方法取消先前计划的离散事件系统的事件。

事件类型 目的
CANCELACQUIRERESOURCE. 取消先前计划的资源获取事件
cancelDestroy 取消先前计划的实体销毁事件。
坎卡沃沃 取消实体转发事件。
CANCLEGANEDE. 取消先前计划的实体生成事件。
cancelIterate 取消以前计划的迭代事件。
cancelTimer 取消先前预定的计时器事件。

事件标识符

由此提供的事件有两个不同的标识符matlab.discreteeventsystem.班级。

  • 标签 - 使用标签作为方法的输入参数。

    event1 = obj.eventTimer (“mytimer1”2);event2 = obj.eventTimer (“mytimer2”5);

    这里,mytimer1mytimer2用作标记来引用这两个计时器事件。

  • 目的地 - 使用目的地识别前向事件。

    event1 = obj.eventforward('贮存',2,0.8);event2 = obj.eventforward('输出',1,2);

    这里,存储输出用于区分两个前向事件。

当它们的标识符是相同的时,事件无法区分。此表显示了如何在同一目标上识别多个事件时识别事件。

事件类型 鉴别
eventAcquireResource 标签
赛事 标签
eventiterate. 标签
EventReleAseresource. 标签
EventReleAleLresources. 标签
Eventtimer. 标签
事实前 目的地

笔记

如果定义了一个尚未执行的事件和具有相同类型和标识符的第二个事件,则第一个事件将被第二个事件替换。

也可以看看

||||||||

相关的话题