Open
Description
use core::sync::atomic::*;
pub fn left(a: &AtomicU32, shift: u32) -> bool {
let mask = 1 << shift;
a.fetch_or(mask, Ordering::Relaxed) & mask == mask
}
pub fn right(a: &AtomicU32, shift: u32) -> bool {
let mask = (1 << (u32::BITS - 1)) >> shift;
a.fetch_or(mask, Ordering::Relaxed) & mask == mask
}
Metadata
Metadata
Assignees
Labels
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
SUPERCILEX commentedon Aug 6, 2023
Hmmm, left also seems to fail with
let mask = 2 << shift;
. Very finicky.