[英]Example of execution which is sequentially consistent but not quiescently consistent
[英]Sequentially consistent but not linearizable execution
我試圖理解線性化和順序一致性之間的區別。 更具體地說,我想有一個順序一致但不可線性化的執行示例。 我的教授給了我以下這樣執行的例子:
Alice and bob write checks to each other.
Alice’s Statement:
-10 Check Alice -> Bob
0 Check Bob -> Alice
Bob’s Statement
-10 Check Bob -> Alice
0 Check Alice -> Bob
Both overdraft.
It is sequential: each client sees a consistent order
It is not linearizable: no globally linear story
但我沒有得到它。 線
n Check A -> B
應該被解釋為“A在操作為n后將檢查寫入B及其帳戶”。 我不明白為什么操作不應該是可線性的:Alice和Bob最終都是0,這是一個一致的值,所以也許我沒有正確地得到'linearisability'的定義。
首先,你的教授給你的不是歷史/執行,而是歷史在兩個線程上的投射。
如果通過遺漏待處理的調用和/或添加對未決調用的響應(您沒有離開),歷史H是可線性化的,您可以獲得一個等同於順序歷史S的歷史記錄,該歷史記錄不會與任何優先級相矛盾。 H。
換句話說,您的示例不可線性化的原因是因為無法在單個時間點分配操作(財務事務)。 扣除第一筆錢,然后再添加,並且線程/個別銀行對賬單會觀察到此行為。
如果銀行對賬單是
Alice’s Statement:
-10 Check Alice -> Bob
0 Check Bob -> Alice
Bob’s Statement
10 Check Alice -> Bob
0 Check Bob -> Alice
然后我們將有一個歷史S如下:
Alice: Send Bob 10
Alice: Send completed
Bob: Send Alice 10
Bob: Send completed
但在你的例子中,歷史可能是
Alice: Send Bob 10 (i.e. money is gone)
Bob: Send Alice 10 (i.e. money is gone)
Bob: Send completed (i.e. money arrived)
Alice: Send completed (i.e. money arrived)
(或1/2線切換和3/4切換的任意組合)並且您不能按順序重新排序(即一起開始/完成的對)而不改變其間每個線程觀察到的賬戶余額。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.