22、状态模式:提醒器与延迟事件机制解析

状态模式:提醒器与延迟事件机制解析

1. 提醒器状态模式

提醒器事件可通过调用QF实时框架提供的 QActive_postFIFO() 函数来触发。提醒器事件会使状态从“空闲”转变为“忙碌”,“忙碌”状态会覆盖 TIMEOUT_SIG 信号,在经历几次超时事件后,状态会转变回“空闲”,如此循环往复。

1.1 提醒器状态模式的影响

虽然提醒器状态模式在概念上很简单,但却有着深远的影响。它就像一把“瑞士军刀”,能解决状态机拓扑结构中的诸多问题。

  • 消除完成转换问题 :在UML规范中,完成转换是没有显式触发器的转换(由完成事件隐式触发,即匿名事件)。而QEP事件处理器要求所有转换都有显式触发器,不支持完成转换。提醒器模式提供了一种解决方法,即可以为每个转换创建一个显式触发器并发送给自己,这样能更好地控制行为,因为可以明确指定完成条件。
  • 拆分长RTC步骤 :长RTC步骤会降低状态机的响应性,并给事件队列带来更大压力。提醒器模式可以将CPU密集型处理(如迭代)拆分成更小的步骤。就像在被打断时,在电脑屏幕上贴便签提醒自己任务进度一样,我们可以为继续处理创建一个刺激因素,还可以发明事件参数来传达上下文,使下一步能从上一步结束的地方继续。这样做的好处是,其他(可能更紧急)的事件可以“插队”,让状态机更及时地处理这些事件。
1.2 事件发布策略

在实现事件发布时,有两种选择:先进先出(FIFO)和后进先出(LIFO)策略,这两种策略在QF实时框架中

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值