#引用计数 #rc #arc #sync

splitrc

线程安全的分割引用计数

12 个版本

0.1.11 2024 年 6 月 26 日
0.1.10 2024 年 6 月 10 日
0.1.6 2024 年 5 月 27 日
0.1.4 2023 年 11 月 23 日

内存管理 类别中排名 371

Download history 266/week @ 2024-05-24 34/week @ 2024-05-31 606/week @ 2024-06-07 43/week @ 2024-06-14 131/week @ 2024-06-21 143/week @ 2024-06-28 5/week @ 2024-07-05 132/week @ 2024-07-26 9/week @ 2024-08-02

每月下载量 141
用于 batch-channel

MIT 许可证

17KB
284 代码行

线程安全的分割引用计数

splitrc 提供一对引用计数,共同管理对象的生命周期。当任一半的计数达到零时,对象都会收到通知。

它主要用于实现通道类型的所有权,其中通道需要在另一半完全释放时收到通知。

实现将两个 32 位计数器存储在一个共享的 64 位原子中。在 64 位平台上,使用原子增加和减少。在 32 位平台上,增加和减少是一个 CAS 循环。

40 亿个引用应该足够了。超过这个数会导致 panic。

指针被任意命名为 [Tx] 和 [Rx],以指示它们在通道中的预期用途。

# struct MyValue {}
# impl splitrc::Notify for MyValue {}
let (tx, rx) = splitrc::new(MyValue {});

依赖项

~0–24MB
~334K SLoC