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