逻辑时钟:Lamport时间戳

Lambdarookie

我目前正在尝试了解Lamport时间戳。考虑两个过程P1(产生事件a1a2,...)和P2(产生事件b1b2,...)。C(e)表示与事件e相关联的Lamport时间戳我为每个事件创建了时间戳,如Wikipedia中有关Lamport时间戳的文章所述

在此处输入图片说明

根据Wikipedia的描述,以下关系对于所有事件e1e2都是正确的

如果e1在e2之前发生,则C(e1)<C(e2)。

让我们看一下a1b2显然a1发生在b2之前,并且由于C(a1)= 1C(b2)= 3,该关系成立:C(a1)<C(b2)

问题b3a3的关系不成立显然,b3发生在a3之前但是,C(b3)= 4C(a3)= 3因此,C(B3)<C(A3),不能适用。

我误会了什么?非常感谢帮助!

Lambdarookie

我发现了我的错误。我写:

如果e1在e2之前发生,则C(e1)<C(e2)。

但是,Lamport将“之前发生”定义为部分排序。这是维基百科关于部分有序集的说法:

这种关系称为部分顺序,以反映并非每对元素都需要关联的事实:对于某些对,可能是摆放器中的任何一个元素都不在另一个元素之前。

根据Lamport对“之前发生”的定义,b3a3不相关,因此b3不在“ a3之前发生” ,因此问题中所述的等式不必成立。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章