我有编写基于事件和轮询的嵌入式系统的经验(用于没有抢占式操作系统的微型MCU)。
在事件驱动系统中,任务通常在队列上接收事件(消息)并依次处理它们。
在轮询驱动系统中,任务以一定的间隔轮询状态并响应变化。
你更喜欢哪种架构?两者可以共存吗?
更新:提出的观点
轮询驱动 - 与时间相关的紧密耦合 (@Lundin) * 可以与使用队列的事件系统共存 (@embedded.kyle) * 对于较小的程序来说非常适用 (@Lundin)
事件驱动 + 长期来看更灵活的系统 (@embedded.kyle) - RTOS版本增加了复杂性 (@Lundin) * 小程序 = 状态机控制 (@Lundin) * 可以使用队列和“超级循环”(控制器/主内部)实现 (@embedded.kyle) * 真正的“事件”只是硬件中断事件 (@Lundin)
在事件驱动系统中,任务通常在队列上接收事件(消息)并依次处理它们。
在轮询驱动系统中,任务以一定的间隔轮询状态并响应变化。
你更喜欢哪种架构?两者可以共存吗?
更新:提出的观点
轮询驱动 - 与时间相关的紧密耦合 (@Lundin) * 可以与使用队列的事件系统共存 (@embedded.kyle) * 对于较小的程序来说非常适用 (@Lundin)
事件驱动 + 长期来看更灵活的系统 (@embedded.kyle) - RTOS版本增加了复杂性 (@Lundin) * 小程序 = 状态机控制 (@Lundin) * 可以使用队列和“超级循环”(控制器/主内部)实现 (@embedded.kyle) * 真正的“事件”只是硬件中断事件 (@Lundin)
相关问题
* 寻找有限状态机不同调度算法的比较 (@embedded.kyle)
相关信息
* "使用Active Objects而非裸线程" (@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