2

我在互联网上发现了两个定义:顺序一致性和最终一致性有什么区别?

连续一致性 - 任何执行的结果与所有处理器的操作以某种顺序执行的结果相同,并且每个处理器的操作按照其程序指定的顺序出现在这个序列中。

最终一致性 - 如果没有对给定数据项进行新更新,则最终对该项的所有访问都将返回上次更新的值。

这些定义对我来说很清楚。但是,当最终一致性不连续时,我不会得到。 示例: mem中的初始值为0.水平轴是时间。

P1:  write 1    (x) 
P2: read 0 read 0 read 0  read 1 read 1 read 1 

因此,有一些顺序,一个如果我们把在(X)插槽“写1”,而这是通过定义顺序一致性。我错在哪里?

回答

0

顺序一致性和最终一致性之间的区别在于它们提供的保证。

最终一致性不指定:

  • 如果存在并发更新到寄存器
  • 不一致的时期持续多久

结果,甚至一个会发生什么当客户修改一个寄存器时,客户端可能会遇到这种情况,但后续读取会返回陈旧的数据。

相同的情况是不可能的,以定义的顺序一致性(总体顺序方面的子处理器顺序)。此外,如果一个程序没有做出时间敏感的假设,并且所有的客户端(处理器)都不在系统之外进行通信,那么顺序一致性与线性化是无法区分开来的。相反,最终的一致性更接近缺乏一致性,而不是线性化。