2

我在互聯網上發現了兩個定義:順序一致性和最終一致性有什麼區別?

連續一致性 - 任何執行的結果與所有處理器的操作以某種順序執行的結果相同,並且每個處理器的操作按照其程序指定的順序出現在這個序列中。

最終一致性 - 如果沒有對給定數據項進行新更新,則最終對該項的所有訪問都將返回上次更新的值。

這些定義對我來說很清楚。但是,當最終一致性不連續時,我不會得到。 示例: mem中的初始值爲0.水平軸是時間。

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

因此,有一些順序,一個如果我們把在(X)插槽「寫1」,而這是通過定義順序一致性。我錯在哪裏?

回答

0

順序一致性和最終一致性之間的區別在於它們提供的保證。

最終一致性不指定:

  • 如果存在併發更新到寄存器
  • 不一致的時期持續多久

結果,甚至一個會發生什麼當客戶修改一個寄存器時,客戶端可能會遇到這種情況,但後續讀取會返回陳舊的數據。

相同的情況是不可能的,以定義的順序一致性(總體順序方面的子處理器順序)。此外,如果一個程序沒有做出時間敏感的假設,並且所有的客戶端(處理器)都不在系統之外進行通信,那麼順序一致性與線性化是無法區分開來的。相反,最終的一致性更接近缺乏一致性,而不是線性化。