2 个不稳定版本
0.3.0 | 2021年5月19日 |
---|---|
0.2.0 | 2020年9月20日 |
0.1.0 |
|
#1001 in 并发
17KB
285 代码行
xarc
xarc
提供了原子可交换的原子引用计数智能指针,作为比原始原子指针更安全的无锁算法构建块。
Xarc
与 Arc
类似,但具有原子交换到和从 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(¤t, &Xarc::null(), Ordering::AcqRel, Ordering::Acquire).unwrap();
assert_eq!(*loaded.maybe_deref().unwrap(), 42);
lib.rs
:
xarc
xarc
提供了原子可交换的原子引用计数智能指针,作为比原始原子指针更安全的无锁算法构建块。
Xarc
与 Arc
类似,但具有原子交换到和从 AtomicXarc
的附加功能。 Xarc
可解引用,但不能原子地交换其内容。 AtomicXarc
可原子地交换其内容,但不能解引用。
依赖项
~255KB