0

我有 P 类、Q 类和 R 类相应地更新表 Pt、表 Qt 和表 Rt。P 类可从图形界面 Pi 修改,同样适用于 Qi 和 Ri。

现在有某些数据在 P、Q 和 R 类之间共享。

为此,我们想提醒用户,每当 Pi、Qi、Ri 同时更新数据时,都会显示一条消息(在所有界面上)并冻结屏幕:“此数据正在从其他地方修改,请稍候一段时间。”

我曾想过在这里使用 Observable 模式,这些类 P、Q 和 R 在 Observable 上注册,而 observable 负责并发访问。这是正确的方法吗?

4

2 回答 2

0

对我来说这听起来是个好计划,我会将代码放在一个条件块中,该块与观察者对象检查是否已设置此代码的命名锁,如果没有,则运行代码,否则响应用户告诉他们数据正在被修改。根据您的语言和环境,有许多不同的方法可以做到这一点。我是命名锁的粉丝,你可以在关联数组中设置一个锁,该数组属于具有唯一名称的观察者对象,并且观察者对象有一个方法来检查命名锁是否存在以及它是否有被锁定。

如果您需要所有并发请求来修改数据以运行,那么还值得创建一个队列对象,该对象可以组织和处理一个或多个队列,当观察者对象释放锁时,它会处理队列中的下一个项目。

于 2012-09-13T12:08:59.773 回答
0

我不知道是否只有观察者会对你有任何好处。GUI Renderer 线程应该只有一个,它应该只做最少的工作,而且它应该包含非常少量的并发,因为它会导致延迟。

我猜 事件(观察者的形式)回调将适合您的要求。

于 2012-09-13T14:12:06.660 回答