簡體   English   中英

順序一致但不可線性化的執行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM