我目前正在尝试了解Lamport时间戳。考虑两个过程P1(产生事件a1,a2,...)和P2(产生事件b1,b2,...)。令C(e)表示与事件e相关联的Lamport时间戳。我为每个事件创建了时间戳,如Wikipedia中有关Lamport时间戳的文章所述:
根据Wikipedia的描述,以下关系对于所有事件e1,e2都是正确的:
如果e1在e2之前发生,则C(e1)<C(e2)。
让我们看一下a1和b2。显然a1发生在b2之前,并且由于C(a1)= 1和C(b2)= 3,该关系成立:C(a1)<C(b2)。
问题:b3和a3的关系不成立。显然,b3发生在a3之前。但是,C(b3)= 4和C(a3)= 3。因此,C(B3)<C(A3),并不能适用。
我误会了什么?非常感谢帮助!
我发现了我的错误。我写:
如果e1在e2之前发生,则C(e1)<C(e2)。
但是,Lamport将“之前发生”定义为部分排序。这是维基百科关于部分有序集的说法:
这种关系称为部分顺序,以反映并非每对元素都需要关联的事实:对于某些对,可能是摆放器中的任何一个元素都不在另一个元素之前。
根据Lamport对“之前发生”的定义,b3和a3不相关,因此b3不在“ a3之前发生” ,因此问题中所述的等式不必成立。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句