分派事件

方法 OMThread::execute 负责事件循环。

关于此任务

以下时序图显示一个分派的超时。

此时序图显示在此方法中,执行事件的主顺序。

事件循环如下所示:

过程

  1. execute 调用 get 方法从事件队列获取第一个事件。
  2. 如果此事件不是 NULL 事件,execute 调用 getDestination方法确定事件的 OMReactive 目标。
  3. execute 调用 takeEvent 方法以请求反应对象处理该事件。takeEvent 调用 processEvent 方法,后者执行以下操作:
    1. 调用 isBusy 以确定对象是否已经在使用事件。如果对象没有在忙,processEvent 会执行以下操作:

      sm_busy 标志设置为 TRUE

      调用 getlId 获取事件标识

      lId 的值传递给 rootState_dispatchEvent 以分派该事件

    2. processEvent 调用 shouldCompleteRun 以检查在使用事件后是否有空过渡可以利用。如果有空过渡可以利用,此方法会调用 runToCompletion 获取这些空过渡。
    3. processEvent 调用 undoBusysm_busy 标志重置为 FALSE
  4. execute 调用 isDeleteAfterConsume 方法确定该事件是否已删除。如果 属性 属性为 TRUE,execute 会调用 删除 方法来删除该事件。

反馈