Type Definition arc_swap::IndependentArcSwap
source · pub type IndependentArcSwap<T> = ArcSwapAny<Arc<T>, PrivateUnsharded>;
Expand description
An atomic storage that doesn’t share the internal generation locks with others.
This makes it bigger and it also might suffer contention (on the HW level) if used from many
threads at once. But using load_signal_safe
will not block writes on other instances.
// This one shares locks with others.
let shared = ArcSwap::from_pointee(42);
// But this one has an independent lock.
let independent = IndependentArcSwap::from_pointee(42);
// This'll hold a lock so any writers there wouldn't complete
let l = independent.load_signal_safe();
// But the lock doesn't influence the shared one, so this goes through just fine
shared.store(Arc::new(43));
assert_eq!(42, **l);