fn enqueue(&self, node: *const Node<T, W>) {
        unsafe {
            debug_assert!((*node).queued.load(Relaxed));

            // This action does not require any coordination
            (*node).next_readiness.store(ptr::null_mut(), Relaxed);

            // Note that these atomic orderings come from 1024cores
            let node = node as *mut _;
            let prev = self.head_readiness.swap(node, AcqRel);
            (*prev).next_readiness.store(node, Release);
        }
    }
/// The enqueue function from the 1024cores intrusive MPSC queue algorithm.
The enqueue function from the 1024cores intrusive MPSC queue algorithm.
The enqueue function from the 1024cores intrusive MPSC queue algorithm .
fn enqueue(&self, node: *const Node<T, W>) {
        unsafe {
            debug_assert!((*node).queued.load(Relaxed));
            // This action does not require any coordination
            (*node).next_readiness.store(ptr::null_mut(), Relaxed);
            // Note that these atomic orderings come from 1024cores
            let node = node as *mut _;
            let prev = self.head_readiness.swap(node, AcqRel);
            (*prev).next_readiness.store(node, Release);
        }
    }
fn enqueue ( & self , node : * const Node < T , W > ) { unsafe { debug_assert ! ( ( node ) queued load ( Relaxed ) ) ; // This action does not require any coordination ( * node ) . next_readiness . store ( ptr :: null_mut ( ) , Relaxed ) ; // Note that these atomic orderings come from 1024cores let node = node as * mut _ ; let prev = self . head_readiness . swap ( node , AcqRel ) ; ( * prev ) . next_readiness . store ( node , Release ) ; } }
The enqueue function from the 1024cores intrusive MPSC queue algorithm.
The enqueue function from the 1024cores intrusive MPSC queue algorithm .
&self
node
*const Node<T, W>
&self
node
*const Node<T, W>