1个不稳定版本
0.1.0 | 2021年4月25日 |
---|
#1394 在 数据结构
在 3 个crate中使用 (直接使用2个)
48KB
725 行
atomic_swapping
具有交换操作的任意类型原子存储。
这保证了无锁,当原子操作保证无锁时,然而并不保证等待无锁。某些操作可能短时间内自旋。所有值都将被适当释放。
use atomic_swapping::option::AtomicSwapOption;
fn main() {
let swap = AtomicSwapOption::new(Some(100usize));
assert_eq!(swap.clone_inner(), Some(100usize));
assert_eq!(swap.take(), Some(100usize));
assert_eq!(swap.take(), None);
swap.set(Some(200usize));
assert_eq!(swap.swap(Some(300usize)), Some(200usize));
assert!(swap.contains_value());
assert_eq!(swap.clone_inner(), Some(300usize));
}
许可证
以下任一许可证下发布:
- Apache许可证2.0版本 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确表示,否则根据Apache-2.0许可证定义的,您提交的任何有意包含在作品中的贡献,将按照上述方式双许可,不附加任何其他条款或条件。