copy on write 在 rust 里怎么实现?

227 天前
 lsk569937453
#[derive(Clone)] 
pub struct DatabaseHolder 
{ 
pub database_lock: Arc<Mutex<Database>>
}

目前是想要实现 redis 的 rdb 。rdb 发生的时候会有许多线程会读写 DatabaseHolder ,然后执行 rdb 的线程会获取锁,然后 clone 数据结构,再把锁 drop 掉,然后把数据写入到文件中。

碰到的问题:clone 会造成内存突增,内存大概增长一倍的样子。原生的 redis 是使用 fork+copy on write 技术实现 rdb 的,在 rust 中怎么实现呢?

1591 次点击
所在节点    Rust
3 条回复
miniliuke
227 天前
rust 有 cow 指针啊
lsk569937453
227 天前
@miniliuke 如果用 cow 指针,数据结构怎么设计呢?
PTLin
227 天前
我在 rustcc 里回复你了,你是没看懂那个回答吗 :(

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1042121

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX