Skip to main content

WorkQueue

Struct WorkQueue 

Source
pub struct WorkQueue { /* private fields */ }
Expand description

Work queue for deferred tasks.

Thread-safe, FIFO queue with bounded capacity. When the queue is full, new tasks are dropped and the overflow counter is incremented.

§Thread Safety

The queue uses a Mutex<VecDeque<Task>> internally, making it safe to push from multiple threads. However, heavy contention should be avoided for performance.

Implementations§

Source§

impl WorkQueue

Source

pub fn new() -> Self

Create a new work queue with default capacity.

Source

pub fn with_capacity(capacity: usize) -> Self

Create a work queue with specified capacity.

Capacity is clamped to MAX_CAPACITY.

Source

pub fn push(&self, task: Task) -> bool

Push a task to the queue.

Returns true if the task was queued, false if dropped due to overflow. This is non-blocking - overflow tasks are immediately dropped.

Source

pub fn try_pop(&self) -> Option<Task>

Try to pop a task from the queue.

Returns None if the queue is empty.

Source

pub fn drain(&self) -> Vec<Task>

Drain all tasks from the queue.

Returns all pending tasks, leaving the queue empty.

Source

pub fn process_pending(&self, limit: usize) -> usize

Process up to limit pending tasks.

Pops and executes tasks in order. Returns the number of tasks successfully executed. Tasks that fail or panic are counted but not returned.

Source

pub fn len(&self) -> usize

Get the number of pending tasks.

Note: This is a snapshot and may change immediately after returning.

Source

pub fn is_empty(&self) -> bool

Check if the queue is empty.

Note: This is a snapshot and may change immediately after returning.

Source

pub const fn capacity(&self) -> usize

Get the queue capacity.

Source

pub fn dropped_count(&self) -> usize

Get the number of dropped tasks (overflow).

This count accumulates over the lifetime of the queue.

Source

pub fn clear(&self) -> usize

Clear all pending tasks without executing them.

Returns the number of tasks cleared.

Trait Implementations§

Source§

impl Debug for WorkQueue

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for WorkQueue

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.