#mutex #deadlock #no-alloc #single-thread

no-std one-shot-mutex

One-shot locks that panic instead of (dead)locking on contention

2 releases

0.1.1 Apr 4, 2024
0.1.0 Apr 3, 2024

#184 in No standard library

Download history 129/week @ 2024-07-25 187/week @ 2024-08-01 208/week @ 2024-08-08 177/week @ 2024-08-15 218/week @ 2024-08-22 248/week @ 2024-08-29 48/week @ 2024-09-05 498/week @ 2024-09-12 40/week @ 2024-09-19 123/week @ 2024-09-26 265/week @ 2024-10-03 95/week @ 2024-10-10 224/week @ 2024-10-17 327/week @ 2024-10-24 92/week @ 2024-10-31 210/week @ 2024-11-07

856 downloads per month
Used in 2 crates (via hermit-sync)

MIT/Apache

17KB
356 lines

one-shot-mutex

Crates.io docs.rs CI

One-shot locks that panic instead of (dead)locking on contention.

These locks allow no contention and panic instead of blocking on lock if they are already locked. This is useful in situations where contention would be a bug, such as in single-threaded programs that would deadlock on contention.

use one_shot_mutex::OneShotMutex;

static X: OneShotMutex<i32> = OneShotMutex::new(42);

let x = X.lock();

// This panics instead of deadlocking.
// let x2 = X.lock();

// Once we unlock the mutex, we can lock it again.
drop(x);
let x = X.lock();

For API documentation, see the docs.

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

~160KB