没研究那么深。用的btree,修改时锁死,独享,不让别人动。不知道能否达到COW的效果。
【 在 hgoldfish 的大作中提到: 】
: 我前面有介绍了两种实现 cow 的方式啊。一种是类似于 Qt 的 QString, QByteArray 这些数据结构使用的,它其实就是个 shared_ptr<> d,读这个数据结构之前,拿住引用。那么写数据结构之前 memcpy() 复制一份内容,修改完修改这个 shared_ptr<> d 不会影响读。
: 另外一种是使用 b-tree,这种数据结构能够做到 cow 修改。所以普通地被各种数据库使用。rust 使用 b-tree 来实现 treemap,而 c++ 则是使用 rb tree,python 使用 hash table.
: 上次有人测过,说 btree map 的数据局部性更好,对 cpu cache 更友好,运行效率更快。不知道是不是真的。
: ...................
--
FROM 221.218.60.*