可以采用类似乐观锁的思想,假设 leaf node 是安全(更新操作仅会引起 leaf node 的变化)的,在查询路径上一路获取、释放 read latch,到达 leaf node 时,若操作不会引起 split/merge 发生,则只需要在 leaf node 上获取 write latch 然后更新数据,释放 write latch 即可;若操作会引起 split/merge 发生,则重新执行一遍,此时在查询路径上一路获取、释放 write latch,即 Latch Crabbing 原始方案。