simple-mutex

Crates.iosimple-mutex
lib.rssimple-mutex
version1.1.5
sourcesrc
created_at2020-05-23 12:44:05.459728
updated_at2020-05-27 11:17:52.688321
descriptionA mutex more efficient than std and simpler than parking_lot
homepagehttps://github.com/stjepang/simple-mutex
repositoryhttps://github.com/stjepang/simple-mutex
max_upload_size
id244866
size37,644
()

documentation

https://docs.rs/simple-mutex

README

simple-mutex

Build License Cargo Documentation

A simple mutex.

More efficient than std::sync::Mutex and simpler than parking_lot::Mutex.

The locking mechanism uses eventual fairness to ensure locking will be fair on average without sacrificing performance. This is done by forcing a fair lock whenever a lock operation is starved for longer than 0.5 milliseconds.

Examples

use simple_mutex::Mutex;
use std::sync::Arc;
use std::thread;

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

for _ in 0..10 {
    let m = m.clone();
    threads.push(thread::spawn(move || {
        *m.lock() += 1;
    }));
}

for t in threads {
    t.join().unwrap();
}
assert_eq!(*m.lock(), 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.

Commit count: 0

cargo fmt