Skip to main content

MainThreadPump

Struct MainThreadPump 

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

Cooperative pump that drains main-thread work items on demand.

MainThreadPump is Clone — all clones share the same underlying queue. The instance that calls pump must be on the affinity thread.

§Thread safety

dispatch is safe to call from any thread. pump must be called from the thread that “owns” the pump (typically the DCC main / UI thread).

Implementations§

Source§

impl MainThreadPump

Source

pub fn new() -> Self

Create a new pump with an unbounded internal queue.

Source

pub fn dispatch<F>(&self, f: F)
where F: FnOnce() + Send + 'static,

Dispatch a closure to run on the affinity thread.

Returns immediately; the closure will be executed on the next pump call.

§Panics

Panics if the pump has been dropped (the receiver end is gone). In normal usage this never happens while any clone is alive.

Source

pub fn pump(&self, budget: Duration) -> PumpStats

Drain pending work items for up to budget wall-clock time.

Call this from the host’s idle / update callback. The pump will process as many items as possible within the budget without over-running it (each item runs to completion; the budget is checked between items).

Returns PumpStats describing what happened.

Source

pub fn pending(&self) -> usize

Number of work items currently waiting to be pumped.

Source

pub fn total_dispatched(&self) -> u64

Total number of closures ever dispatched since this pump was created.

Source

pub fn total_processed(&self) -> u64

Total number of closures ever processed since this pump was created.

Trait Implementations§

Source§

impl Clone for MainThreadPump

Source§

fn clone(&self) -> MainThreadPump

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for MainThreadPump

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoMetered for T

Source§

fn metered(self, metrics: Arc<ChannelMetrics>) -> MeteredSender<Self>

Wrap this sender with metrics tracking.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<T> WithMetrics for T

Source§

fn with_metrics(self) -> MeteredWrapper<Self>

Wrap this channel with metrics tracking.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more