状态模式:提醒器与延迟事件机制解析
1. 提醒器状态模式
提醒器事件可通过调用QF实时框架提供的 QActive_postFIFO() 函数来触发。提醒器事件会使状态从“空闲”转变为“忙碌”,“忙碌”状态会覆盖 TIMEOUT_SIG 信号,在经历几次超时事件后,状态会转变回“空闲”,如此循环往复。
1.1 提醒器状态模式的影响
虽然提醒器状态模式在概念上很简单,但却有着深远的影响。它就像一把“瑞士军刀”,能解决状态机拓扑结构中的诸多问题。
- 消除完成转换问题 :在UML规范中,完成转换是没有显式触发器的转换(由完成事件隐式触发,即匿名事件)。而QEP事件处理器要求所有转换都有显式触发器,不支持完成转换。提醒器模式提供了一种解决方法,即可以为每个转换创建一个显式触发器并发送给自己,这样能更好地控制行为,因为可以明确指定完成条件。
- 拆分长RTC步骤 :长RTC步骤会降低状态机的响应性,并给事件队列带来更大压力。提醒器模式可以将CPU密集型处理(如迭代)拆分成更小的步骤。就像在被打断时,在电脑屏幕上贴便签提醒自己任务进度一样,我们可以为继续处理创建一个刺激因素,还可以发明事件参数来传达上下文,使下一步能从上一步结束的地方继续。这样做的好处是,其他(可能更紧急)的事件可以“插队”,让状态机更及时地处理这些事件。
1.2 事件发布策略
在实现事件发布时,有两种选择:先进先出(FIFO)和后进先出(LIFO)策略,这两种策略在QF实时框架中
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



