关于更新锁的以及意向锁的问题
首先我看书,书上是这么说的,对于一个资源当两个进程同时设置了共享锁,然后都准备修改数据变成排他锁,由于排他锁和共享锁互斥,所以必须等到其另一个进程的共享锁释放才可以设置排他锁,但是在可重复读级别下,共享锁会一直保留到事物结束,所以两个进程都不释放共享锁,也就都不能设置排他锁,所以引起死锁,
然后书上说更新锁可以解决这种问题,但是后边又说更新锁跟排他锁也会互斥,我就想不通既然更新锁跟排它锁也互斥,
那么假设进程A和B同时又共享锁,进程A先把共享锁变成更新锁,然后打算变成排他锁,但是这时候进程B并没有释放共享锁,进程A的更新锁也不能变成排他锁,会一直等待B结束;;;
回头看进程B,进程B准备把共享锁变成排它锁,由于进程A存在更新锁,跟排它锁互斥,所以进程B也不能设置排它锁,这一依然是2个进程互相等待。
上面的例子是我的理解,我不知道这样理解对不对,如果对的话,更新锁也不能解决死锁啊
问题2 意向锁和普通的(共享锁,排它锁)互斥吗,表锁,页锁,行锁之间是否互斥
注意观察你上图的LOCK获取的类型跟次序,你现在明白“1,它并没有S->U->X,而是直接U->X”了吗?