【发布时间】:2015-09-21 02:56:36
【问题描述】:
我已经用 Java 实现了一个 B+ 树。现在我想知道允许并发插入的最佳方法是什么。我的想法是锁定一个节点,如果它是 maxFilled -1(这意味着拆分事件已关闭)。否则我只会在轮班期间锁定阵列。但是这种方式可能会发生锁定一个非常接近根的节点,因此也锁定了太多的子节点。是否有更好的方法或最佳实践来确保 B+ 树线程安全?
【问题讨论】:
-
如何确定节点何时变为 maxFilled - 1,因为当节点尚未处于此状态时,多个线程可以开始写入?
-
@KubaWyrostek 因为我会将数组锁定在当前叶节点中(因此最多一个线程可以在同一个叶节点上运行)。总是可以只有一个反向传播。嗯,但是是的,两片叶子可能同时分裂,这会导致父级出现问题..所以我需要另一个解决方案吗?
标签: java multithreading b-tree