Struct msp430_atomic::AtomicUsize
source · #[repr(C, align(8))]pub struct AtomicUsize { /* private fields */ }
Expand description
An integer type which can be safely shared between threads.
This type has the same in-memory representation as the underlying integer type.
Implementations§
source§impl AtomicUsize
impl AtomicUsize
sourcepub const fn new(v: usize) -> Self
pub const fn new(v: usize) -> Self
Creates a new atomic integer.
Examples
use msp430_atomic::AtomicIsize;
let atomic_forty_two = AtomicIsize::new(42);
sourcepub fn get_mut(&mut self) -> &mut usize
pub fn get_mut(&mut self) -> &mut usize
Returns a mutable reference to the underlying integer.
This is safe because the mutable reference guarantees that no other threads are concurrently accessing the atomic data.
Examples
use msp430_atomic::AtomicIsize;
let mut some_isize = AtomicIsize::new(10);
assert_eq!(*some_isize.get_mut(), 10);
*some_isize.get_mut() = 5;
assert_eq!(some_isize.load(), 5);
sourcepub fn into_inner(self) -> usize
pub fn into_inner(self) -> usize
Consumes the atomic and returns the contained value.
This is safe because passing self
by value guarantees that no other threads are
concurrently accessing the atomic data.
Examples
use msp430_atomic::AtomicIsize;
let some_isize = AtomicIsize::new(5);
assert_eq!(some_isize.into_inner(), 5);
sourcepub fn load(&self) -> usize
pub fn load(&self) -> usize
Loads a value from the atomic integer.
Examples
use msp430_atomic::AtomicIsize;
let some_isize = AtomicIsize::new(5);
assert_eq!(some_isize.load(), 5);
sourcepub fn store(&self, val: usize)
pub fn store(&self, val: usize)
Stores a value into the atomic integer.
Examples
use msp430_atomic::AtomicIsize;
let some_isize = AtomicIsize::new(5);
some_isize.store(10);
assert_eq!(some_isize.load(), 10);
sourcepub fn add(&self, val: usize)
pub fn add(&self, val: usize)
Adds to the current value, returning the previous value.
This operation wraps around on overflow.
Examples
use msp430_atomic::AtomicIsize;
let foo = AtomicIsize::new(0);
foo.add(10);
assert_eq!(foo.load(), 10);
sourcepub fn sub(&self, val: usize)
pub fn sub(&self, val: usize)
Subtracts from the current value, returning the previous value.
This operation wraps around on overflow.
Examples
use msp430_atomic::AtomicIsize;
let foo = AtomicIsize::new(0);
foo.sub(10);
assert_eq!(foo.load(), -10);
sourcepub fn and(&self, val: usize)
pub fn and(&self, val: usize)
Bitwise “and” with the current value.
Performs a bitwise “and” operation on the current value and the argument val
, and
sets the new value to the result.
Examples
use msp430_atomic::AtomicIsize;
let foo = AtomicIsize::new(0b101101);
foo.and(0b110011);
assert_eq!(foo.load(), 0b100001);
sourcepub fn or(&self, val: usize)
pub fn or(&self, val: usize)
Bitwise “or” with the current value.
Performs a bitwise “or” operation on the current value and the argument val
, and
sets the new value to the result.
Examples
use msp430_atomic::AtomicIsize;
let foo = AtomicIsize::new(0b101101);
foo.or(0b110011);
assert_eq!(foo.load(), 0b111111);
sourcepub fn xor(&self, val: usize)
pub fn xor(&self, val: usize)
Bitwise “xor” with the current value.
Performs a bitwise “xor” operation on the current value and the argument val
, and
sets the new value to the result.
Examples
use msp430_atomic::AtomicIsize;
let foo = AtomicIsize::new(0b101101);
foo.xor(0b110011);
assert_eq!(foo.load(), 0b011110);