#sync #同步 #非阻塞

clone-replace

通过复制和替换引用版本共享可变数据

2 个版本

0.1.1 2022年5月12日
0.1.0 2022年5月12日

#701并发


4 个 Crates 中使用 (3 个直接使用)

Apache-2.0 OR MIT

14KB
170

clone-replace - 通过复制引用来共享数据

CloneReplace 提供了一些数据的 evolving reference 版本。当访问数据时,你将获得一个指向该引用在那一刻的快照的 Arc 处理器。当你想修改数据时,将对其进行完整复制,你可以独立更新它,而不会阻塞任何读取者。修改完成后,副本将被写回以成为新的引用版本。

示例

use clone_replace::CloneReplace;

let data = CloneReplace::new(1);

let v1 = data.access();
assert_eq!(*v1, 1);
{
   let mut m = data.mutate();
   *m = 2;
   let v2 = data.access();
   assert_eq!(*v1, 1);
   assert_eq!(*v2, 1);
}
let v3 = data.access();
assert_eq!(*v3, 2);
assert_eq!(*v1, 1);

许可协议

本软件包可以在 Apache-2.0MIT 许可协议 下使用。

依赖关系

~185KB