Crate readlock

Source
Expand description

§readlock

(Shared) Read-Only Lock: A thing that can be useful when you don’t really want shared mutability, you just want to mutate a value from one place and read it from many others.

This library provides three types:

  • Shared<T>: similar to Arc<RwLock<T>>, but you can only create SharedReadLock<T>s and WeakReadLock<T>s from it that share access to the same inner value, not further Shared<T>s. Also, acquiring a write lock requires unique ownership / borrowing (&mut self). However: Reading requires no locking because mutably borrowing the Shared means that no other thread can be mutating the value at the same time (all other reference to the value are read-only).
  • SharedReadLock<T>: like a Arc<RwLock<T>> that is only ever used for reading. Can be downgraded to WeakReadLock.
  • WeakReadLock<T>: like a Weak<RwLock<T>>. That is, it references the same memory, but if the original Shared and any derived SharedReadLocks to that value are dropped, it will be deallocated regardless of any WeakReadLocks. Must be upgraded into SharedReadLock to access the inner value.

Modules§

litelite
Versions of Shared and SharedReadLock that are implemented in terms of the rclite crate. Because rclite::Arc doesn’t have weak references, there is no WeakReadLock here.

Structs§

Shared
A wrapper around a resource possibly shared with SharedReadLocks and WeakReadLocks, but no other Shareds.
SharedReadGuard
RAII structure used to release the shared read access of a lock when dropped.
SharedReadLock
A read-only reference to a resource possibly shared with up to one Shared and many WeakReadLocks.
SharedWriteGuard
RAII structure used to release the exclusive write access of a lock when dropped.
WeakReadLock
A weak read-only reference to a resource possibly shared with up to one Shared and many SharedReadLocks.