async-mutex

Build Rustc version License Cargo Documentation

An async mutex.

Examples

```rust use async_mutex::Mutex; use smol::Task; use std::sync::Arc;

let m = Arc::new(Mutex::new(0)); let mut tasks = vec![];

for _ in 0..10 { let m = m.clone(); tasks.push(Task::spawn(async move { *m.lock().await += 1; })); }

for t in tasks { t.await; } assert_eq!(*m.lock().await, 10); ```

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.