rust-rsm 0.3.2

RSM:A Realtime Software Middleware framework. Asynchronous, event driven framework
Documentation
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]

use std::sync::atomic::{AtomicBool,Ordering};
use std::hint;

pub struct spin_lock_t {
    locked:AtomicBool,
}
impl spin_lock_t {
    pub fn new()->Self {
        Self{ locked:AtomicBool::new(false)}
    }

    #[inline(always)]
    pub fn lock(&self) {
        while self.locked.compare_exchange(false, true, Ordering::SeqCst, Ordering::Relaxed).is_err() {
            hint::spin_loop();
        } 
    }

    #[inline(always)]
    pub fn unlock(&self) {
        while self.locked.compare_exchange(true, false, Ordering::SeqCst, Ordering::Relaxed).is_err() {
            hint::spin_loop();
        } 
    }
    pub fn value(&self)->bool {
        self.locked.load(Ordering::Acquire)
    }

}

impl Drop for spin_lock_t {
    fn drop(&mut self) {
        if self.locked.load(Ordering::Acquire)==true {
            self.unlock()
        }
       
    }
}