1

正如我所瞭解的,有時稱爲「樂觀併發控制」的「樂觀鎖」實際上沒有鎖。一個典型的實現是CAS(比較和交換)。 所以我想知道爲什麼這仍然被稱爲「樂觀鎖定」?是否有任何歷史原因,因爲這個術語起源於數據庫世界?樂觀鎖樂觀併發控制

+0

基本上「鎖」是一個鬆散的抽象術語,用於任何類型的互斥。有時這種語言被鬆散地使用,就像人們所說的「阻塞」一個線程是「鎖定」那個線程的進展。最好是更精確地使用像「互斥」這樣的術語,它有更明確的定義。 – CMCDragonkai

回答

1

正如您正確指出的那樣,事務不會獲取它嘗試更新的行/持久對象上的任何鎖定。但是,正如你可能也意識到樂觀鎖定按照Versiosing的原則工作。含義...數據庫表記錄的版本列(如果已設置)會在每次事務更新時增加。此外,任何嘗試更新特定記錄的事務都需要將檢索時的記錄版本號與更新時的記錄版本號進行比較。它就像你有鑰匙​​(如鎖鑰匙),稱爲版本號,並試圖查看它是否匹配。如果匹配(意味着......記錄不會被另一個tx更新),並且你更新。如果匹配失敗(記錄由另一個tx更新並且你的密鑰不再工作了)。

因此,版本控制/選項鎖定顯示爲您有一個用於虛擬不存在的鎖的密鑰(稱爲版本)。當你當前的記錄版本不匹配和PREVENTS(意味着LOCKED)你更新記錄的情況下,可以理解鎖的真正意義。