Struct crossbeam::mem::CachePadded [] [src]

pub struct CachePadded<T> {
    // some fields omitted
}

Pad T to the length of a cacheline.

Sometimes concurrent programming requires a piece of data to be padded out to the size of a cacheline to avoid "false sharing": cachelines being invalidated due to unrelated concurrent activity. Use the CachePadded type when you want to avoid cache locality.

At the moment, cache lines are assumed to be 32 * sizeof(usize) on all architectures.

Warning: the wrapped data is never dropped; move out using ptr::read if you need to run dtors.

Methods

impl<T: ZerosValid> CachePadded<T>
[src]

fn zeroed() -> CachePadded<T>

A const fn equivalent to mem::zeroed().

impl<T> CachePadded<T>
[src]

fn new(t: T) -> CachePadded<T>

Wrap t with cacheline padding.

Warning: the wrapped data is never dropped; move out using ptr:read if you need to run dtors.

Trait Implementations

impl<T: Send> Send for CachePadded<T>
[src]

impl<T: Sync> Sync for CachePadded<T>
[src]

impl<T> Deref for CachePadded<T>
[src]

type Target = T

The resulting type after dereferencing

fn deref(&self) -> &T

The method called to dereference a value

impl<T> DerefMut for CachePadded<T>
[src]

fn deref_mut(&mut self) -> &mut T

The method called to mutably dereference a value