3 个不稳定版本
0.2.0 | 2021年12月18日 |
---|---|
0.1.1 | 2021年12月18日 |
0.1.0 | 2021年12月18日 |
#639 在 并发
11KB
162 行
多层智能指针
多层智能指针使用原子全局引用计数器和每个线程的非原子引用计数器。目标是当执行足够的局部副本时,MLSP 应该比纯原子计数的智能指针性能更好。
Mlsp
Mlsp
类型可以像 Rc
一样在单个线程内共享内存。它没有实现 Send
,因此不能在线程之间发送,所以对它执行的任何 clone()
和 drop()
操作都使用本地计数器(除了给定线程中的最后一个 drop)。
Mlsp
比 Rc
的好处在于,重新包装以与其他线程共享它不需要复制或移动底层数据,它已经被以某种方式存储,并带有计数器,这可以用于线程之间的共享。
MlspPackage
要将 Mlsp
发送到另一个线程,您必须创建一个 MlspPackage
。MlspPackage
类型实现了 Send
,并准备好发送到其他线程。接收线程然后使用它来创建一个新的 Mlsp
,它有自己的本地引用计数器。
let a = Mlsp::new(1u8).package();
thread::spawn(move || {
let a2 = a; // Valid because MlspPackage implements Send
println!("{:?}", a.unpackage().borrow());
})
基准测试和测试
这个库还需要大量的基准测试和测试来证明其健壮性和有效性。