From 8ad769586382899033fcc55a669028c8af7d21a9 Mon Sep 17 00:00:00 2001 From: Botahamec Date: Thu, 27 Oct 2022 17:44:57 -0400 Subject: Switch to an or instruction --- src/lock.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/lock.rs b/src/lock.rs index becdfaa..45dd1ad 100644 --- a/src/lock.rs +++ b/src/lock.rs @@ -1,5 +1,6 @@ use std::sync::atomic::{AtomicBool, Ordering}; +/// A dumb lock that's just a wrapper for an [`AtomicBool`]. #[derive(Debug, Default)] pub struct Lock { is_locked: AtomicBool, @@ -13,9 +14,7 @@ impl Lock { } pub fn try_lock(&self) -> bool { - self.is_locked - .compare_exchange_weak(false, true, Ordering::Acquire, Ordering::Relaxed) - .is_ok() + !self.is_locked.fetch_or(true, Ordering::Acquire) } pub fn unlock(&self) { -- cgit v1.2.3