Expand description
Task execution utilities.
In the Tokio execution model, futures are lazy. When a future is created, no work is performed. In order for the work defined by the future to happen, the future must be submitted to an executor. A future that is submitted to an executor is called a “task”.
The executor is responsible for ensuring that Future::poll
is
called whenever the task is notified. Notification happens when the
internal state of a task transitions from “not ready” to ready. For
example, a socket might have received data and a call to read
will now be
able to succeed.
The specific strategy used to manage the tasks is left up to the
executor. There are two main flavors of executors: single-threaded and
multi-threaded. Tokio provides implementation for both of these in the
runtime
module.
Executor
trait.
This module provides the Executor
trait (re-exported from
tokio-executor
), which describes the API that all executors must
implement.
A free spawn
function is provided that allows spawning futures onto the
default executor (tracked via a thread-local variable) without referencing a
handle. It is expected that all executors will set a value for the default
executor. This value will often be set to the executor itself, but it is
possible that the default executor might be set to a different executor.
For example, a single threaded executor might set the default executor to a
thread pool instead of itself, allowing futures to spawn new tasks onto the
thread pool when those tasks are Send
.
Structs
Executes futures on the default executor for the current execution context.
Return value from the spawn
function.
Errors returned by Executor::spawn
.
Traits
A value that executes futures.
A value that spawns futures of a specific type.
Functions
Spawns a future on the default executor.