vault backup: 2025-03-17 23:27:45
This commit is contained in:
parent
b1a01ebdf2
commit
6961a69e1e
1 changed files with 15 additions and 12 deletions
|
@ -146,24 +146,27 @@ X.read_T(i) :=
|
|||
|
||||
return lc(XX).val
|
||||
|
||||
X.write_T(v) :=
|
||||
X.write_T(i, v) :=
|
||||
if lc(XX) = ⊥ then
|
||||
lc(XX) <- newloc
|
||||
lc(XX).val <- v
|
||||
write_set(T) <- write_set(T) U {X}
|
||||
|
||||
try_to_commit_T() :=
|
||||
try_to_commit_T(i) :=
|
||||
lock all read_set(T) U write_set(T)
|
||||
|
||||
if ∃ Y ∈ read_set(T) s.t.
|
||||
|
||||
∀ X ∈ read_set(T)
|
||||
if XX.date >= birthdate(T) then
|
||||
if ∃ Y ∈ read_set(T) s.t. t_dependT[Y] < YY.depend[Y] then
|
||||
release all locks
|
||||
ABORT
|
||||
tmp <- CLOCK.fetch&add(1)+1
|
||||
∀ X ∈ write_set(T)
|
||||
XX <- ⟨lc(XX).val, tmp⟩
|
||||
# abortisco se ho letto un Y che è stato modificato dopo che io l'ho letto, giusto?
|
||||
|
||||
∀ X ∈ write_set(T) do
|
||||
t_dependT[X] <- XX.depend[X]+1
|
||||
|
||||
∀ X ∈ write_set(T) do
|
||||
XX <- ⟨lc(XX).val, t_dependT⟩
|
||||
|
||||
release all locks
|
||||
p_depend_i <- t_depend_T
|
||||
COMMIT
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue