【发布时间】:2019-10-21 00:21:54
【问题描述】:
Lehman and Yao (1981) 中引入的B-link tree 声称any insert operation need at most 3 locks simultaneously。
我很难找到获取 3 个锁的具体场景。 场景是什么?
【问题讨论】:
Lehman and Yao (1981) 中引入的B-link tree 声称any insert operation need at most 3 locks simultaneously。
我很难找到获取 3 个锁的具体场景。 场景是什么?
【问题讨论】:
场景出现在:
A)被拆分(分成A1和A2),因此需要将拆分键(max(A1))插入父节点( T)。T 也有一个指向S 的有效链接指针。该值必须插入S 而不是T。三把锁分别是:
A1:防止该节点(以及其链接指向的节点)进一步分裂T 上:当Move.right 执行时(见下文)。S 上:当Move.right 执行时(见下文)。[Move.right]
while True:
S = scannode(v, T)
if isLinkPointer(S):
lock(S) # <-- 3 locks *
unlock(T) # <-- 2 locks
T = S
锁 2 和 3 更像是向右移动时必须获取的“转换锁”。因此,3 次锁的场景真的只是很短的时间。
【讨论】: