我有编写基于事件和轮询的嵌入式系统的经验(对于没有抢占式操作系统的微型 MCU)。
在基于事件的系统中,任务通常在队列中接收事件(消息)并依次处理它们。
在基于轮询的系统中,任务以一定的间隔轮询状态并响应变化。
你更喜欢哪种架构?两者可以共存吗?
更新:要点
基于投票
- 与时间方面相关的紧密耦合 (@Lundin)
* 可以与使用队列的事件系统共存 (@embedded.kyle)
* 适合较小的程序 (@Lundin)
基于事件
+ 从长远来看更灵活的系统 (@embedded.kyle)
- RTOS 版本增加了复杂性 (@Lundin)
* 小程序 = 状态机控制 (@Lundin)
* 可以使用队列和“超级循环”来实现(在控制器/主程序内部)(@embedded.kyle)
* 只有真正的“事件”是硬件中断事件(@Lundin)
相关问题
*寻找有限状态机的不同调度算法的比较(@embedded.kyle)
相关信息
*“更喜欢使用活动对象而不是裸线程”(@Miro)
http://www.drdobbs.com/parallel/prefer-using-active-objects-instead-of-n/225700095
*“正确使用线程 =隔离 + 异步消息” (@Miro)
http://www.drdobbs.com/parallel/use-threads-correctly-isolation-asynch/215900465