lock-hierarchy

Crates.iolock-hierarchy
lib.rslock-hierarchy
version0.1.2
sourcesrc
created_at2022-09-20 13:46:44.683692
updated_at2022-09-20 14:29:17.149959
descriptionPrevent dead locks by enforcing lock hierarchies
homepage
repositoryhttps://github.com/Aleph-Alpha/lock-hierarchy-rs
max_upload_size
id669917
size9,399
Markus Klein (pacman82)

documentation

README

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();
Commit count: 14

cargo fmt