LockFreeProducer

Trait LockFreeProducer 

Source
pub trait LockFreeProducer<T>: Producer<T> {
    // Required method
    fn lock_free_maybe_push(&self, value: T) -> Result<(), LockFreePushErr<T>>;
}
Expand description

A lock-free producer of a queue.

Required Methods§

Source

fn lock_free_maybe_push(&self, value: T) -> Result<(), LockFreePushErr<T>>

Pushes a value only if the queue is not full. On failure, returns Err(LockFreePushErr).

It is lock-free. If you can lock, you can look at the Producer::maybe_push method because if it is implemented not as lock-free, it should have better performance.

Implementors§

Source§

impl<T, const CAPACITY: usize, AtomicWrapper> LockFreeProducer<T> for MPMCBoundedQueue<T, CAPACITY, AtomicWrapper>
where AtomicWrapper: Deref<Target = LongAtomic> + Default,

Source§

impl<T: Send, SC> LockFreeProducer<T> for CachePaddedSPMCUnboundedProducer<T, SC>

Source§

impl<T: Send, SC> LockFreeProducer<T> for SPMCUnboundedProducer<T, SC>

Source§

impl<T: Send, SC> LockFreeProducer<T> for CachePaddedSPSCUnboundedProducer<T, SC>

Source§

impl<T: Send, SC> LockFreeProducer<T> for SPSCUnboundedProducer<T, SC>

Source§

impl<T: Send, const CAPACITY: usize> LockFreeProducer<T> for CachePaddedMPMCProducer<T, CAPACITY>

Source§

impl<T: Send, const CAPACITY: usize> LockFreeProducer<T> for MPMCProducer<T, CAPACITY>

Source§

impl<T: Send, const CAPACITY: usize> LockFreeProducer<T> for CachePaddedSPMCProducer<T, CAPACITY>

Source§

impl<T: Send, const CAPACITY: usize> LockFreeProducer<T> for SPMCProducer<T, CAPACITY>

Source§

impl<T: Send, const CAPACITY: usize> LockFreeProducer<T> for CachePaddedSPSCProducer<T, CAPACITY>

Source§

impl<T: Send, const CAPACITY: usize> LockFreeProducer<T> for SPSCProducer<T, CAPACITY>