#智能指针 #线程局部 #计数器 #原子 #全局 #rc #require

mlsp

Mlsp 是一个用于智能指针的小型库,它使用线程局部和全局原子计数器

3 个不稳定版本

0.2.0 2021年12月18日
0.1.1 2021年12月18日
0.1.0 2021年12月18日

#639并发

MIT 许可证

11KB
162

Toy Badge

多层智能指针

多层智能指针使用原子全局引用计数器和每个线程的非原子引用计数器。目标是当执行足够的局部副本时,MLSP 应该比纯原子计数的智能指针性能更好。

Mlsp

Mlsp 类型可以像 Rc 一样在单个线程内共享内存。它没有实现 Send,因此不能在线程之间发送,所以对它执行的任何 clone()drop() 操作都使用本地计数器(除了给定线程中的最后一个 drop)。

MlspRc 的好处在于,重新包装以与其他线程共享它不需要复制或移动底层数据,它已经被以某种方式存储,并带有计数器,这可以用于线程之间的共享。

MlspPackage

要将 Mlsp 发送到另一个线程,您必须创建一个 MlspPackageMlspPackage 类型实现了 Send,并准备好发送到其他线程。接收线程然后使用它来创建一个新的 Mlsp,它有自己的本地引用计数器。

let a = Mlsp::new(1u8).package();

thread::spawn(move || {
    let a2 = a; // Valid because MlspPackage implements Send
    println!("{:?}", a.unpackage().borrow());
})

基准测试和测试

这个库还需要大量的基准测试和测试来证明其健壮性和有效性。

无运行时依赖项