Struct SendExecutor

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

A multi-threaded port-based executor for Fuchsia. Requires that tasks scheduled on it implement Send so they can be load balanced between worker threads.

Having a SendExecutor in scope allows the creation and polling of zircon objects, such as [fuchsia_async::Channel].

§Panics

SendExecutor will panic on drop if any zircon objects attached to it are still alive. In other words, zircon objects backed by a SendExecutor must be dropped before it.

Implementations§

Source§

impl SendExecutor

Source

pub fn new(num_threads: u8) -> Self

Create a new multi-threaded executor.

Source

pub fn set_worker_init( &mut self, worker_init: impl Fn() + Send + Sync + 'static, )

Set a new worker initialization callback. Will be invoked once at the start of each worker thread.

Source

pub fn with_worker_init(self, worker_init: fn()) -> Self

Apply the worker initialization callback to an owned executor, returning the executor.

The initialization callback will be invoked once at the start of each worker thread.

Source

pub fn port(&self) -> &Port

Get a reference to the Fuchsia zx::Port being used to listen for events.

Source

pub fn run<F>(&mut self, future: F) -> F::Output
where F: Future + Send + 'static, F::Output: Send + 'static,

Run future to completion, using this thread and num_threads workers in a pool to poll active tasks.

Trait Implementations§

Source§

impl Debug for SendExecutor

Source§

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

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

impl Drop for SendExecutor

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, 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.

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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.