Expand description
An async reader-writer lock.
This type of lock allows multiple readers or one writer at any point in time.
The locking strategy is write-preferring, which means writers are never starved. Releasing a write lock wakes the next blocked reader and the next blocked writer.
§Examples
use async_rwlock::RwLock;
let lock = RwLock::new(5);
// Multiple read locks can be held at a time.
let r1 = lock.read().await;
let r2 = lock.read().await;
assert_eq!(*r1, 5);
assert_eq!(*r2, 5);
drop((r1, r2));
// Only one write lock can be held at a time.
let mut w = lock.write().await;
*w += 1;
assert_eq!(*w, 6);
Structs§
- RwLock
- An async reader-writer lock.
- RwLock
Read Guard - A guard that releases the read lock when dropped.
- RwLock
Upgradable Read Guard - A guard that releases the upgradable read lock when dropped.
- RwLock
Write Guard - A guard that releases the write lock when dropped.