#[repr(C, align(64))]struct CacheLine<T>(T);
Expand description
This puts each stack in the pool below into its own cache line. This is an absolutely critical optimization that tends to have the most impact in high contention workloads. Without forcing each mutex protected into its own cache line, high contention exacerbates the performance problem by causing “false sharing.” By putting each mutex in its own cache-line, we avoid the false sharing problem and the affects of contention are greatly reduced.
Tuple Fields§
§0: T
Trait Implementations§
Auto Trait Implementations§
impl<T> Freeze for CacheLine<T>where
T: Freeze,
impl<T> RefUnwindSafe for CacheLine<T>where
T: RefUnwindSafe,
impl<T> Send for CacheLine<T>where
T: Send,
impl<T> Sync for CacheLine<T>where
T: Sync,
impl<T> Unpin for CacheLine<T>where
T: Unpin,
impl<T> UnwindSafe for CacheLine<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more