priomutex 0.3.0

A mutex where waiting threads specify a priority

priomutex: a mutex where waiting threads specify a priority

The API is very similar to std::sync::Mutex. The key difference, of course, is that lock() takes a priority. If multiple threads are waiting for the mutex when it's freed, the one which gave the highest priorty will recieve it.

impl<T> Mutex<T> {
    fn new(data: T) -> Mutex<T>;
    fn lock(&self, prio: usize) -> LockResult<MutexGuard<T>>;
    fn try_lock(&self) -> TryLockResult<MutexGuard<T>>;
}

impl<T> Drop for MutexGuard<T>;      // Releases the lock
impl<T> Deref for MutexGuard<T>;     // For accessing your data
impl<T> DerefMut for MutexGuard<T>;  // For accessing your data

This crate also includes a high-performance variant in the spin_once module, which spins the highest-priority waiting thread. This makes releasing the mutex very fast, because it never needs to do any syscalls.

Licence

Licensed under either of the following, at your option:

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.