我在互联网上找到了两个定义:
顺序一致性 - 任何执行的结果都与所有处理器的操作按某种顺序执行相同,并且每个处理器的操作按照其程序指定的顺序显示在此序列中。 / p>
最终一致性 - 如果没有对给定数据项进行新的更新,最终对该项的所有访问都将返回上次更新的值。
这些定义对我来说很清楚。但是,当最终的一致性不是连续的时候,我不会得到。 一个例子: mem中的初始值为0.水平轴是时间。
P1: write 1 (x)
P2: read 0 read 0 read 0 read 1 read 1 read 1
所以,有一些顺序订单,如果我们把#34;写1"在(x)槽中,这是按定义的顺序一致性。我哪里错了?
答案 0 :(得分:1)
顺序一致性和最终一致性之间的区别在于它们提供的保证。
最终的一致性没有指定:
因此,即使是单个客户端在修改寄存器时也会遇到这种情况,但后续读取会返回过时数据。
根据定义,顺序一致性也不可能出现同样的情况(整体顺序与子处理器顺序相关)。
此外,如果程序没有做出时间敏感的假设并且所有客户端(处理器)都不在系统外进行通信,则顺序一致性与线性化无法区分。相反,最终的一致性更接近缺乏一致性而不是线性化。