所以,我想出了这个方案,用于在多个线程同时具有读写访问权限的二叉树中旋转时锁定节点,这涉及每次旋转锁定四个节点,这似乎非常多?我想出了一种更聪明的方法,然后我想出了一种减少所需锁定的方法,但谷歌并没有出现太多(我可能使用了错误的术语)。
这是我目前的方案,橙色和红色节点被旋转移动或更改,需要锁定,绿色节点与任何受旋转影响但本身不受旋转影响的节点相邻。
我认为必须有一种更好的方法来做到这一点,我的一个想法是拍摄受影响的四个节点的快照,在快照中旋转它们,然后用快照替换当前节点(假设在我正在做旋转)-这将使我几乎可以无锁,但考虑到旋转是一个相当快速的操作(重新分配三个指针),我担心内存开销可能会很大?
我想我正在寻找如何有效地做到这一点的指针(没有双关语)。