10 releases
0.1.8 | Jul 13, 2024 |
---|---|
0.1.7 | Jul 6, 2023 |
0.1.6 | Jun 21, 2023 |
0.1.5 | Mar 28, 2023 |
0.0.1 | Feb 18, 2023 |
#168 in Concurrency
5,995 downloads per month
Used in 18 crates
(via eyeball)
19KB
255 lines
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 toArc<RwLock<T>>
, but you can only createSharedReadLock<T>
s andWeakReadLock<T>
s from it that share access to the same inner value, not furtherShared<T>
s. Also, acquiring a write lock requires unique ownership / borrowing (&mut self
). However: Reading requires no locking because mutably borrowing theShared
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 aArc<RwLock<T>>
that is only ever used for reading. Can be downgraded toWeakReadLock
.WeakReadLock<T>
: like aWeak<RwLock<T>>
. That is, it references the same memory, but if the originalShared
and any derivedSharedReadLock
s to that value are dropped, it will be deallocated regardless of anyWeakReadLock
s. Must be upgraded intoSharedReadLock
to access the inner value.
Dependencies
~15KB