2017-04-19 103 views

回答

2

T1和T2是被完全不同完全不知道彼此的处理相同,所以它们应该

即使T2进程“升级其在X上的读锁定”,对T1应该发生什么仍然没有任何区别:它仍然应该开始等待,直到X上的T2锁定被释放。

所以我们还是有T1等T2,我们仍然有T2 不必开始在其中T2试图获取Y.

它的锁点等待T1所以我们仍然有两个进程等待为另一个释放一些锁。僵局。

编辑

,如果你在第三部分“锁管理器”,讨论到T1和T2画出也许理解这个问题就简单得多了。此锁定管理器组件经过的状态依次为“无锁”,“Y在T1上读取锁定”,“在Y上读取由T1保持的锁定和在X上由T2保存读取锁定”。

它是后者的位,首先迫使锁管理器进入由T1上X拒绝所述锁定请求,并且后来迫使锁定管理器为否定上Y.

由T2锁定请求前者位