2009-07-22 128 views
1

我正在制作一个小对等应用程序,它包含一个通用的对象集合。这不是一个关于传输对象的套接字通信的问题,因为我已经对它进行了排序。多个客户端之间的对象同步算法

首先我不必担心冲突,因为客户端只能添加到对象集合中。但是我正在努力解决我的问题,如何通过谈判来确定他们需要向对方转移哪些对象。

我猜想这之前已经做过很多次,而且必须有某种同步算法有某处的......

任何想法?

UPDATE:

我想我询问是否有一种方法,而无需通过每个对等点的所有对象具有周期同步,并检查它们的存在,在另一端

回答

1

如果您使用ObservableCollection可执行INotifyPropertyChanged的可序列化对象,则可以对对象进行排队,以便在更改对象时进行传输。如果您将需要同步的对象保留在HashSet中,则可以避免线性排序为代价的队列中的重复条目。如果您仔细覆盖GetHashCode(),或者甚至更好地创建一个返回较强散列的方法,则可以筛选出两端均等更改的项目。

编辑:对于初始同步,构建一个数据包,将所有当前对象的生成散列列​​为二进制块。这样交换很快。

0

分配一个GUID给每个对象,当你合并它们时,你不会将它们区分开来。还是我误解你的问题?

+0

主要问题是,当我连接到另一个同伴时,是否必须遍历每一个对象以检查它们是否存在于两个对象上? – Tim 2009-07-23 00:04:46

+0

是的,你必须通过较小的集合。 如果你可以把你正在搜索的字典收集,检查可以从O(n)到O(1)。 – 2009-07-23 00:29:36

相关问题