1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
use std::sync::atomic; // todo: this is the generic impl, specialize for x64 #[inline] pub fn thread_fence() { atomic::fence(atomic::Ordering::AcqRel) } #[inline] pub fn fence() { atomic::fence(atomic::Ordering::SeqCst) } #[inline] pub fn acquire() { atomic::fence(atomic::Ordering::Acquire) } #[inline] pub fn release() { atomic::fence(atomic::Ordering::Release) } #[inline] pub fn cpu_pause() { ::std::thread::yield_now(); }