(1)4种 。 16,8,4,2
T1 T2 T3 A=16
T1 T3 T2. A=8
T2 T1 T3 / T3 T1 T2. A=4
T2 T3 T1 /T3 T2 T1. A=2
(2)结果为16
T1 | T2 | T3 |
---|---|---|
Slock A | ||
Y=R(A)=0 | ||
Unlock A | ||
Xlock A | ||
Slock A | ||
A=Y+2 | 等待 | |
W(A) | 等待 | |
Unlock A | 等待 | |
Y=R(A)=2 | ||
Unlock A | ||
Xlock A | ||
Slock A | ||
A=Y*2 | 等待 | |
W(A) | 等待 | |
Unlock A | 等待 | |
Y=R(A)=4 | ||
Unlock A | ||
Xlock A | ||
A=Y*2 | ||
W(A) | ||
Unlock A |
(3)结果为0
T1 | T2 | T3 |
---|---|---|
Slock A | ||
Y=R(A)=0 | ||
Slock A | ||
等待 | Unlock A | |
Y=R(A)=0 | ||
Unlock A | ||
Xlock A | ||
A=Y*2 | Slock A | |
W(A) | 等待 | |
Unlock A | 等待 | |
Y=R(A)=0 | ||
Unlock A | ||
Xlock A | ||
A=Y+2 | Xlock A | |
W(A) | 等待 | |
Unlock A | 等待 | |
A=Y**2 | ||
W(A) | ||
Unlock A |
(4)
T1 | T2 | T3 |
---|---|---|
Slock A | ||
Y=R(A)=0 | ||
Xlock A | ||
A=Y+2 | ||
Slock A | ||
W(A) | 等待 | |
Unlock A | 等待 | |
Y=R(A)=2 | ||
Xlock A | ||
Unlock A | 等待 | Slock A |
A=Y*2 | 等待 | |
W(A) | 等待 | |
Unlock A | 等待 | |
Y=R(A)=4 | ||
Unlock A | ||
Xlock A | ||
A=Y**2 | ||
W(A) | ||
Unlock A | ||
Unlock A |
(5)
T1 | T2 | T3 |
---|---|---|
Slock A | ||
Y=R(A)=0 | ||
Slock A | ||
Y=R(A)=0 | ||
Xlock A | ||
等待 | Xlock A | |
等待 | ||
Slock A | ||
Y=R(A)=0 | ||
Xlock A | ||
等待 |
是冲突可串行化的调度
不同事物的读写或写写操作之间可以交换位置,交换位置后r3(B)w3(B)r2(B)r2(A)w2(B)r1(A)r1(B)w1(A),等价于一个串行调度T3T2T1
(1)
T1 | T2 |
---|---|
Slock A | |
X=R(A) | |
Slock B | |
Y=R(B) | |
Xlock B | |
B=X+Y | |
W(B) | |
Unlock B | |
Slock B | |
X=R(B) | |
Unlock B | |
Unlock A | |
Slock A | |
Y=R(A) | |
Xlock A | |
A=X+Y | |
W(A) | |
Unlock A | |
Unlock A | |
Unlock B |
(2)可能会引起死锁
T1 | T2 |
---|---|
Slock A | |
X=R(A) | |
Slock B | |
Y=R(B) | |
Slock B | |
Y=R(B) | |
Xlock B | |
等待 | Slock A |
等待 | X=R(A) |
等待 | Xlock A) |
等待 |