答案 0 :(得分:2)
T1和T2是完全不同,完全不知道彼此的进程,所以他们应该。
即使T2进程 "升级其X"它仍然不会对T1应该发生什么有任何不同:它仍然应该开始等待,直到X上的T2锁被释放。
所以我们仍然有T1等待T2,我们仍然有T2 必须开始在T2试图获取其对Y的锁定时等待T1。
所以我们仍然有两个进程等待另一个进程释放一些锁。死锁。
修改
如果您使用第三个组件" Locks Manager"那么理解这个问题可能会更容易一些。与T1和T2谈话。此锁定管理器组件所经历的状态按顺序排列"没有锁定","读取锁定在Y"上的T1;"读取由T1保持在Y上的锁定并且在X"上持有由T2持有的锁定。
后一位首先强制Lock Manager拒绝X上的T1锁定请求,而后一位随后强制Lock Manager拒绝T2上的T2锁定请求。