Skip to main content

Executor

Struct Executor 

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

A dual-queue executor optimized for singlethreaded usecase, with support for multithreaded wakes.

Same-thread wakes (Waker::wake) will schedule tasks within the queue directly; cross-thread wakes will send task id’s to a channel, and piggybacked to singlethreaded wakes or ticks. This ensures maximum performance for singlethreaded scenario at the trade-off of worse tail latency for multithreaded wake-ups.

Optionally, all Wakers generated from this executor can contain an extra data, parameterized as E.

Implementations§

Source§

impl Executor

Source

pub fn new() -> Self

Create a new executor.

Source

pub fn with_config(config: ExecutorConfig) -> Self

Create a new executor with config.

Source

pub fn spawn<F: Future + 'static>(&self, fut: F) -> JoinHandle<F::Output>

Spawn a future onto the executor.

Source

pub fn tick(&self) -> bool

Retrieve all sync tasks, schedule those to the tail of hot queue and run at most max_interval tasks.

Running start with hot tasks, then cold ones. Finished tasks will be pushed back to tail of cold queue.

Return whether there are still hot tasks after the tick.

Source

pub fn clear(&self)

Clear the executor, drop all tasks.

This should be called only in context of the runtime, if any future may use it. Any panic happened during dropping the future will cause the process to abort. If this was not called before dropping, all tasks will be leakded.

Trait Implementations§

Source§

impl Debug for Executor

Source§

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

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

impl Default for Executor

Source§

fn default() -> Self

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

impl Drop for Executor

Source§

fn drop(&mut self)

Executes the destructor for this 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> 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, 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> 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