Struct maitake_sync::util::CachePadded
source · pub struct CachePadded<T>(/* private fields */);
no-cache-pad
only.Expand description
Aligns the wrapped value to the size of a cache line.
This is used to avoid false sharing for values that may be accessed concurrently.
Size/Alignment
The size and alignment of this type depends on the target architecture,
and on whether or not the no-cache-pad
feature flag is enabled.
When the no-cache-pad
crate feature flag is enabled, this is simply a
no-op wrapper struct. This is intended for use on useful for platforms
with no data cache, such as many Cortex-M targets.
In other cases, this type is always aligned to the size of a cache line,
based on the target architecture. On x86_64
/aarch64
, a cache line is
128 bytes. On all other targets, a cache line is assumed to 64 bytes
long. This type’s size will always be a multiple of the cache line size;
if the wrapped type is longer than the alignment of a cache line, then
this type will be padded to multiple cache lines.
Implementations§
source§impl<T> CachePadded<T>
impl<T> CachePadded<T>
sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Unwraps the inner value and returns it.
Trait Implementations§
source§impl<T: Clone> Clone for CachePadded<T>
impl<T: Clone> Clone for CachePadded<T>
source§fn clone(&self) -> CachePadded<T>
fn clone(&self) -> CachePadded<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<T: Debug> Debug for CachePadded<T>
impl<T: Debug> Debug for CachePadded<T>
source§impl<T: Default> Default for CachePadded<T>
impl<T: Default> Default for CachePadded<T>
source§fn default() -> CachePadded<T>
fn default() -> CachePadded<T>
source§impl<T> Deref for CachePadded<T>
impl<T> Deref for CachePadded<T>
source§impl<T> DerefMut for CachePadded<T>
impl<T> DerefMut for CachePadded<T>
source§impl<T: Hash> Hash for CachePadded<T>
impl<T: Hash> Hash for CachePadded<T>
source§impl<T: PartialEq> PartialEq for CachePadded<T>
impl<T: PartialEq> PartialEq for CachePadded<T>
source§fn eq(&self, other: &CachePadded<T>) -> bool
fn eq(&self, other: &CachePadded<T>) -> bool
self
and other
values to be equal, and is used
by ==
.