2 releases
0.1.2 | Sep 20, 2022 |
---|---|
0.1.1 | Sep 20, 2022 |
#1081 in Concurrency
446 downloads per month
8KB
129 lines
Lock hierarchy
This Rust crate offers debug assertions for violations of lock hierarchies. No runtime overhead or protection occurs for release builds.
Usage
use lock_hierarchy::Mutex;
let mutex_a = Mutex::new(()); // Level 0
let mutex_b = Mutex::with_level((), 0); // also level 0
// Fine, first mutex in thread
let _guard_a = mutex_a.lock().unwrap();
// Must panic, lock hierarchy violation
let _guard_b = mutex_b.lock().unwrap();
use lock_hierarchy::Mutex;
let mutex_a = Mutex::with_level((), 1); // Level 1
let mutex_b = Mutex::new(()); // level 0
// Fine, first mutex in thread
let _guard_a = mutex_a.lock().unwrap();
// Fine: 0 is lower level than 1
let _guard_b = mutex_b.lock().unwrap();
lib.rs
:
This crate offers debug assertions for violations of lock hierarchies. No runtime overhead or protection occurs for release builds.