#mutex #synchronization #lock #parking-lot #sync #locking

simple-mutex

A mutex more efficient than std and simpler than parking_lot

8 stable releases

1.1.5 May 27, 2020
1.1.4 May 26, 2020
1.1.1 May 25, 2020
1.0.1 May 23, 2020

#1368 in Concurrency

Download history 4741/week @ 2024-11-17 4702/week @ 2024-11-24 4460/week @ 2024-12-01 5039/week @ 2024-12-08 5999/week @ 2024-12-15 2258/week @ 2024-12-22 2222/week @ 2024-12-29 3584/week @ 2025-01-05 5053/week @ 2025-01-12 4534/week @ 2025-01-19 5386/week @ 2025-01-26 7409/week @ 2025-02-02 5032/week @ 2025-02-09 4913/week @ 2025-02-16 4721/week @ 2025-02-23 3038/week @ 2025-03-02

18,251 downloads per month
Used in 4 crates (2 directly)

Apache-2.0 OR MIT

14KB
170 lines

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.

Dependencies

~140KB