blob: becdfaa926857e4fec3f9357249af5ba0bee33b9 (
plain)
use std::sync::atomic::{AtomicBool, Ordering};
#[derive(Debug, Default)]
pub struct Lock {
is_locked: AtomicBool,
}
impl Lock {
pub const fn new() -> Self {
Self {
is_locked: AtomicBool::new(false),
}
}
pub fn try_lock(&self) -> bool {
self.is_locked
.compare_exchange_weak(false, true, Ordering::Acquire, Ordering::Relaxed)
.is_ok()
}
pub fn unlock(&self) {
self.is_locked.store(false, Ordering::Release)
}
}
|