#lock-free #smart-pointers #performance #generic #memory #building-block #content

xarc

xarc 提供了原子可交换的原子引用计数智能指针,作为比原始原子指针更安全的无锁算法构建块。与 Arc 类似,但 Xarc 还具有原子交换到和从 AtomicXarc 的能力。 Xarc 可解引用,但不能原子地交换其内容。 AtomicXarc 可以原子地交换其内容,但不能解引用。

2 个不稳定版本

0.3.0 2021年5月19日
0.2.0 2020年9月20日
0.1.0 2020年9月16日

#1001 in 并发

MPL-2.0 许可证

17KB
285 代码行

xarc

xarc 提供了原子可交换的原子引用计数智能指针,作为比原始原子指针更安全的无锁算法构建块。

XarcArc 类似,但具有原子交换到和从 AtomicXarc 的附加功能。 Xarc 可解引用,但不能原子地交换其内容。 AtomicXarc 可原子地交换其内容,但不能解引用。

以下是一个相当简化的例子。

use core::sync::atomic::Ordering;
use xarc::{AtomicXarc, Xarc};

let atomic = AtomicXarc::new(42);

let current = atomic.load(Ordering::Acquire);
let loaded = atomic.compare_exchange(&current, &Xarc::null(), Ordering::AcqRel, Ordering::Acquire).unwrap();
assert_eq!(*loaded.maybe_deref().unwrap(), 42);

lib.rs:

xarc

xarc 提供了原子可交换的原子引用计数智能指针,作为比原始原子指针更安全的无锁算法构建块。

XarcArc 类似,但具有原子交换到和从 AtomicXarc 的附加功能。 Xarc 可解引用,但不能原子地交换其内容。 AtomicXarc 可原子地交换其内容,但不能解引用。

依赖项

~255KB