#mutex #group #locking #spin #time #no-std

no-std mtxgroup

mutex group locks all mutexes at the same time

1 unstable release

0.1.1 Nov 24, 2023
0.1.0 Nov 24, 2023

#489 in Concurrency

40 downloads per month

MIT license

6KB
124 lines

MuTeX GROUP

Introduction

MuTeX GROUP can be used to lock all mutexes at the same time.

Example

static MUTEX_0: Mutex<usize> = Mutex::new(0);
static MUTEX_1: Mutex<usize> = Mutex::new(1);
static MUTEX_2: Mutex<usize> = Mutex::new(2);

let mutexes = vec![&MUTEX_0, &MUTEX_1, &MUTEX_2];
let mtxgroup = MutexGroup::new(mutexes.into_iter());
let guard = mtxgroup.lock(); // Locks all mutexes at the same time

for mutex in guard.iter() {
    // Do something with the mutexes
}

for mut mutex in guard.into_iter() { // `into_iter` consumes the guard
    // Do something with the mutexes
}

Features

  • Compliable with no_std
    • requires spin crate

License

Licensed under MIT license

Dependencies

~150KB