移动中的松耦合分布式响应式编程
1. 响应式编程基础语义
在响应式编程中,方法调用的参数情况决定了方法的执行方式。若方法调用的所有参数都是普通值,方法仅执行一次;若至少有一个响应式值作为参数,则会创建一个依赖响应式值,当响应式参数发生变化时,会重新调用变异方法。不过,接收者的变化会被忽略。而且,解释器会确保当变异方法被调用时,接收者的所有依赖都会收到其源对象已更新的通知。
例如,在代码示例的第16行,使用该语义向GPS设备注册位置观察者,当用户位置需要更新时,就会调用该观察者。此时,会对响应式对象 GPS_Location 调用变异方法 update ,由于其参数是普通数值,该方法仅调用一次,更新坐标以反映最新的传感器值。之后,所有隐式依赖于 GPS_Location 的响应式值都会收到位置已更改的通知,这可能会导致用户界面更新,使地图以用户更新后的位置为中心。
需要注意的是,变异方法不需要是原子操作就能保证正确性。解释器构建的数据流图的分层结构,结合在单个事件循环中根据该分层调度的所有更新,可防止局部并发控制问题,并确保对响应式值的更新顺序与程序的调用图一致,这在响应式更新触发副作用时至关重要。
2. 松耦合分布式响应式编程
之前描述的响应式编程系统仅处理单个本地事件循环中的事件。但在很多情况下,分布式应用组件对移动自组织网络中其他设备(即其他事件循环)发出的事件感兴趣。为此,引入了一种名为“环境行为”的语言结构,它通过发布/订阅机制,允许事件以松耦合的方式传播到不同事件循环上的响应式值。
从本地响应式值过渡到环境行为需要特别
超级会员免费看
订阅专栏 解锁全文
1227

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



