pub struct Producer<T: AnyBitPattern, const CAPACITY: usize> { /* private fields */ }Expand description
The publishing handle of an SPMC broadcast queue.
Created together with its Consumers by
new. A Producer is Send but not Sync:
at most one thread may publish at a time. To enforce that, the type is
neither Clone nor Copy.
Publishing never blocks and never allocates: when the queue is full the
oldest slot is overwritten, and any consumer that hasn’t read past that
slot will observe a ReadResult::Lapped
on its next read.
Implementations§
Source§impl<T, const CAPACITY: usize> Producer<T, CAPACITY>where
T: AnyBitPattern,
impl<T, const CAPACITY: usize> Producer<T, CAPACITY>where
T: AnyBitPattern,
Sourcepub fn publish(&self, value: T)
pub fn publish(&self, value: T)
Publishes value into the next slot.
Wait-free. Never blocks, never allocates. If the queue is full, the
oldest slot is silently overwritten; consumers that haven’t read past
that slot will observe a ReadResult::Lapped
on their next try_read.
§Examples
use low_latency_data_structures::spmc::{ReadResult, new};
let (producer, [mut consumer]) = new::<u64, 16, 1>();
producer.publish(42);
assert_eq!(consumer.try_read(), ReadResult::Value(42));Trait Implementations§
impl<T: AnyBitPattern, const CAPACITY: usize> Send for Producer<T, CAPACITY>
Auto Trait Implementations§
impl<T, const CAPACITY: usize> !RefUnwindSafe for Producer<T, CAPACITY>
impl<T, const CAPACITY: usize> !Sync for Producer<T, CAPACITY>
impl<T, const CAPACITY: usize> !UnwindSafe for Producer<T, CAPACITY>
impl<T, const CAPACITY: usize> Freeze for Producer<T, CAPACITY>
impl<T, const CAPACITY: usize> Unpin for Producer<T, CAPACITY>
impl<T, const CAPACITY: usize> UnsafeUnpin for Producer<T, CAPACITY>
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