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 并发

Download history 1287/week @ 2024-05-03 1368/week @ 2024-05-10 1432/week @ 2024-05-17 1344/week @ 2024-05-24 1477/week @ 2024-05-31 1412/week @ 2024-06-07 1387/week @ 2024-06-14 1587/week @ 2024-06-21 1399/week @ 2024-06-28 1384/week @ 2024-07-05 1905/week @ 2024-07-12 2050/week @ 2024-07-19 1475/week @ 2024-07-26 1294/week @ 2024-08-02 861/week @ 2024-08-09 1146/week @ 2024-08-16

5,333 每月下载量
14 个 Crates 中使用 (通过 eyeball)

MPL-2.0 许可证

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