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. If the task scheduler is fair, readers will not be starved either.
```rust 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; asserteq!(*r1, 5); asserteq!(*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); ```
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.