我有P类,Q类和R类相应地更新表Pt,表Qt和表Rt。 P类可以从图形界面Pi修改,同样适用于Qi和Ri。
现在,某些数据在P,Q和R类之间共享。
出于这个原因,我们希望亲密的用户,每当Pi,Qi和Ri同时更新数据时,会显示一条消息(在所有界面上)并且屏幕变为冻结状态: “这些数据正在从其他地方修改,请等一段时间。”
我想过在这里使用Observable模式,其中这些类P,Q和R在Observable上注册,而observable负责并发访问。 这是正确的方法吗?
答案 0 :(得分:0)
这听起来对我来说是一个好计划,我会将代码放在一个条件块中,该块检查观察者对象以查看是否已设置此代码的命名锁,如果没有则运行代码,否则响应向用户告诉他们数据正在被修改。根据您的语言和环境,有许多不同的方法可以做到这一点。我是命名锁的粉丝,你可以使用唯一名称在属于observer对象的关联数组中设置锁,并且observer对象有一个方法来检查命名锁是否存在以及是否存在被锁定了。
如果您需要修改要运行的数据的所有并发请求,那么创建一个可以组织和处理一个或多个队列的队列对象也是值得的,当观察者对象释放锁时,该队列对象会在队列中处理下一个项目
答案 1 :(得分:0)
我不知道只有Observer会对你有什么好处。 GUI渲染器线程应该只有一个,它应该只做最少量的工作,它应该包含非常少量的并发性,因为它会导致延迟。
我猜Event(Form of Observer)和callback符合您的要求。