B tree 模块“github.com/google/btree”中的“copyOnWriteContext”是什么意思?

B tree 模块“github.com/google/btree”中的“copyOnWriteContext”是什么意思?,b-tree,B Tree,最近,我读了google/btree的源代码。但是我被structcopyOnWriteContext混淆了。它用于节点函数mutableFor,如下所示 func (n *node) mutableFor(cow *copyOnWriteContext) *node { if n.cow == cow { return n } fmt.Println("new node?") out := cow.newNode()

最近,我读了google/btree的源代码。但是我被struct
copyOnWriteContext
混淆了。它用于
节点
函数
mutableFor
,如下所示

func (n *node) mutableFor(cow *copyOnWriteContext) *node {
    if n.cow == cow {
        return n
    }
    fmt.Println("new node?")
    out := cow.newNode()
    if cap(out.items) >= len(n.items) {
        out.items = out.items[:len(n.items)]
    } else {
        out.items = make(items, len(n.items), cap(n.items))
    }
    copy(out.items, n.items)
    // Copy children
    if cap(out.children) >= len(n.children) {
        out.children = out.children[:len(n.children)]
    } else {
        out.children = make(children, len(n.children), cap(n.children))
    }
    copy(out.children, n.children)
    return out
}
我检查了这个模块中的所有代码,发现只有一个地方可以创建copyOnWriteContext的实例。这是创建树的时间

func New(degree int) *BTree {
    return NewWithFreeList(degree, NewFreeList(DefaultFreeListSize))
}
那么
mutableFor
的含义是什么呢。因为在整个代码中只有一个
copyOnWriteContext
n.cow
始终等于param
cow