|
|
|
|
|
Note:
|
|
READ1(A, t) // Subscript indicate the transaction
t = t + 100
WRITE1(A, t)
READ1(B, t)
t = t + 100
WRITE1(B, t)
READ2(A, s)
s = 2×s
WRITE2(A, s)
READ2(B, s)
s = 2×s
WRITE2(B, t)
|
|
|
|
|
|
|
T1 T2 A B
=======================================================
READ(A, t) c c
t = t + 100
WRITE(A, t) --------------------> c+100
READ(A, s)
s = 2×s
WRITE(A, s) ----> 2c+200
READ(B, t)
t = t + 100
WRITE(B, t) ------------------------------> c+100
READ(B, s)
s = 2×s
WRITE(B, s) -------------> 2c+200
|
Observe that:
|
The schedule is therefore serializable
T1 T2
=================================
READ(A, t)
t = t + 100
WRITE(A, t)
READ(A, s)
s = 2×s
WRITE(A, s)
READ(B, s)
s = 2×s
WRITE(B, s)
READ(B, t)
t = t + 100
WRITE(B, t)
|
T1 T2 A B
=======================================================
READ(A, t) c c
t = t + 100
WRITE(A, t) --------------------> c+100
READ(A, s)
s = 2×s
WRITE(A, s) ----> 2c+200
READ(B, s)
s = 2×s
WRITE(B, s) -------------> 2c
READ(B, t)
t = t + 100
WRITE(B, t) ------------------------------> 2c+100
|
At the end of the execution, we have:
A = 2c + 100
B = c + 100
|
This result can never be obtained by a serial execution of T1 and T2 !!!!
Therefore:
|