2 个版本
使用旧的 Rust 2015
0.1.1 | 2016 年 9 月 6 日 |
---|---|
0.1.0 | 2016 年 8 月 21 日 |
76 在 #exchange
每月下载 23 次
在 concurrent-stack 中使用
10KB
178 行代码(不包括注释)
使用戳记的 AtomicPtr 避免ABA问题
用法
在您的 Cargo.toml
中添加以下内容
[dependencies]
atomic-stamped-ptr = "0.1.0"
并在您的 crate 根目录中添加以下内容
extern crate atomic_stamped_ptr;
入门
将指针存储到 AtomicStampedPtr 原子性中
let a = AtomicStampedPtr::new(ptr);
或
a.store(ptr);
从 AtomicStampedPtr 原子性中获取指针和版本
let (ptr, version) = a.load();
使用 AtomicStampedPtr 原子性交换指针
let new_ptr = a.swap(ptr);
比较和交换
let (p, v) = a.compare_and_swap((ptr, version), new_ptr);
if (p, v) == (ptr, version) {
// Success
} else {
// Failure
}
比较和交换
if let Ok((p, v)) == a.compare_exchange((ptr, version), new_ptr) {
// Success
} else {
// Failure
}
lib.rs
:
AtomicStampedPtr