Lehman 和 Yao (1981)中B-link tree
介绍的.any insert operation need at most 3 locks simultaneously
我很难找到获取 3 个锁的具体场景。场景是什么?
Lehman 和 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 锁场景实际上只是极小的时间。