在事件驱动的体系结构中,每个组件仅在事件通过系统发送时起作用。
假设有一辆带有刹车踏板和刹车灯的假想汽车。
- 刹车灯在接收到刹车启动事件时亮起,并在接收到刹车关闭事件时熄灭。
- 制动踏板发送brake_on当它被按下事件和brake_off当它被释放事件。
这是一切都很好,直到你有其中汽车已开启,制动踏板的情况已经按下。由于刹车灯从未收到过刹车事件,因此它将保持熄灭状态-显然是不希望的情况。默认情况下,打开刹车灯只会扭转这种情况。
如何解决此“初始状态问题”?
编辑:谢谢您的所有答复。我的问题不是关于一辆真正的汽车。在汽车中,他们通过不断发送状态来解决此问题-因此在该域中没有启动问题。在我的软件领域,该解决方案将使用许多不必要的CPU周期。
编辑2:除了@gbjbaanb的答案外,我还将使用以下系统:
- 假设的制动踏板在初始化后会发送一个事件及其状态,并且
- 假设的制动灯在初始化后发送一个事件,要求从制动踏板发出状态事件。
使用此解决方案,组件之间没有依赖关系,没有竞争条件,没有消息队列过时,也没有“主”组件。
initialize
),其中包含所需的传感器数据。