async-rwlock

Build License Cargo Documentation

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

```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); ```

License

Licensed under either of

at your option.

Contribution

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.