1 stable release
1.0.0 | Feb 24, 2023 |
---|
#424 in Memory management
1,112 downloads per month
5KB
arc-atomic-ref
an AtomicRef
is a smart pointer type that can be shared with many
different threads of execution, while at the same time can be swapped out
atomically with new data. In this way, it's similar to a lock-free
RwLock
or Mutex
when you can replace the contained data rather than
modify it.
use arc_atomic_ref::AtomicRef;
use std::sync::Arc;
let ptr = AtomicRef::new(1);
// share ptr with many threads with `clone`
// change its contained value, requires a new `Arc`
ptr.swap(Arc::new(2));
// all threads should see the change, use `.load()` to get the value
assert_eq!(**ptr.load(), 2);
lib.rs
:
arc-atomic-ref
an AtomicRef
is a smart pointer type that can be shared with many
different threads of execution, while at the same time can be swapped out
atomically with new data. In this way, it's similar to a lock-free
RwLock
or Mutex
when you can replace the contained data rather than
modify it.
use arc_atomic_ref::AtomicRef;
use std::sync::Arc;
let ptr = AtomicRef::new(1);
// share ptr with many threads with `clone`
// change its contained value, requires a new `Arc`
ptr.swap(Arc::new(2));
// all threads should see the change, use `.load()` to get the value
assert_eq!(**ptr.load(), 2);
Dependencies
~185KB