#container #atomic #arc #box #monotonic

无 std quinine

原子单调容器(Mono{Box,Arc})

2 个不稳定版本

0.2.0 2022年2月17日
0.1.0 2022年2月17日

908并发 中排名

Download history 400/week @ 2024-03-13 285/week @ 2024-03-20 105/week @ 2024-03-27 136/week @ 2024-04-03 109/week @ 2024-04-10 181/week @ 2024-04-17 81/week @ 2024-04-24 270/week @ 2024-05-01 290/week @ 2024-05-08 194/week @ 2024-05-15 151/week @ 2024-05-22 135/week @ 2024-05-29 230/week @ 2024-06-05 173/week @ 2024-06-12 148/week @ 2024-06-19 169/week @ 2024-06-26

每月下载量740次
用于 verneuil

Apache-2.0/MIT

28KB
550

奎宁

Crates.io docs.rs

奎宁实现了类似 Option<Box<T>> (MonoBox) 和 Option<Arc<T>> (MonoArc) 的容器,这些容器的写操作是单次的。

这些单次写入的容器可以通过简单的 Ordering::Acquire 加载进行读取;其他读取操作的性能类似于 BoxArc。在写入端,原子更新通过比较和交换实现,只有第一个会成功。

代码比例如 ArcSwap 简单(并且可能更快),因为它利用了这些单次写入容器更新的单调性。这尤其适用于读取,但更新也避免了与潜在并发读取者的大量协调开销。

当原子容器只能从 None 单调地过渡到 Some,并保持在那里时,我们可以实现简单的更新算法,而不必担心从容器派生的引用的生存期:一旦我们观察到 Some 值,容器就可以被信任为我们保持其活性(直到容器安全地被丢弃)。这个技巧的一般形式适用于任何拥有单调增加资源集的容器,直到容器本身被销毁。

无运行时依赖

功能