10 个版本
0.1.8 | 2024年7月13日 |
---|---|
0.1.7 | 2023年7月6日 |
0.1.6 | 2023年6月21日 |
0.1.5 | 2023年3月28日 |
0.0.1 | 2023年2月18日 |
#493 in 并发
5,333 每月下载量
在 14 个 Crates 中使用 (通过 eyeball)
19KB
255 行
readlock
(共享) 只读锁:当您实际上不希望共享可变时,只希望从一个地方修改值而从许多其他地方读取值时,这可能很有用。
此库提供了三种类型
Shared<T>
:类似于Arc<RwLock<T>>
,但您只能从它创建SharedReadLock<T>
和WeakReadLock<T>
,它们共享对同一内部值的访问,而不是进一步Shared<T>
。此外,获取写锁需要唯一的拥有权/借用 (&mut self
)。然而:读取不需要锁定,因为从Shared
可变借用意味着没有其他线程可以在同一时间修改该值(所有其他对该值的引用都是只读的)。SharedReadLock<T>
:类似于一个仅供读取的Arc<RwLock<T>>
。它可以降级为WeakReadLock
。WeakReadLock<T>
:类似于Weak<RwLock<T>>
。也就是说,它引用相同的内存,但如果原始的Shared
和对该值的任何派生的SharedReadLock
都被丢弃,它将被释放,无论是否有任何WeakReadLock
。必须升级到SharedReadLock
才能访问内部值。
依赖项
~15KB