4 个版本 (破坏性)
0.4.0 | 2021年11月30日 |
---|---|
0.3.0 | 2019年11月18日 |
0.2.0 | 2019年2月8日 |
0.1.0 | 2019年2月8日 |
在 并发 中排名第 352
每月下载 632 次
用于 9 个 包(直接使用 3 个)
28KB
383 行
atomicbox
安全的原子框。
此包提供了 AtomicBox<T>
和 AtomicOptionBox<T>
类型:标准库的 AtomicPtr
的安全、拥有版本。
不幸的是,您可以对原子框执行的唯一操作是交换和存储:您不能直接使用盒子而不取得所有权。想象一下没有 Deref
或 DerefMut
实现的 Box
,你就会明白这个意思。尽管如此,这对于某些无锁数据结构来说已经足够了,所以这就是它的样子!
为什么没有 Deref
?
这不会是安全的。AtomicBox
的目的是其他线程可以获取装箱的值,获取它的所有权,甚至丢弃它,而无需获取锁。因此,没有安全的方式去借用这个值——除非你自己从 AtomicBox
中交换出来。
这基本上也是为什么您不能借用任何其他原子类型的内容的引用的原因。这会引发数据竞争。这里的不同之处在于那些内容恰好位于堆上。
许可证:MIT/Apache-2.0