Expand description
Tasks used to drive a future computation
It’s intended over time a particular operation (such as servicing an HTTP request) will involve many futures. This entire operation, however, can be thought of as one unit, as the entire result is essentially just moving through one large state machine.
A “task” is the unit of abstraction for what is driving this state machine
and tree of futures forward. A task is used to poll futures and schedule
futures with, and has utilities for sharing data between tasks and handles
for notifying when a future is ready. Each task also has its own set of
task-local data generated by task_local!
.
Note that libraries typically should not manage tasks themselves, but rather
leave that to event loops and other “executors” (see the executor
module),
or by using the wait
method to create and execute a task directly on the
current thread.
More information about the task model can be found online at tokio.rs.
Functions
There is an important bare function in this module: current
. The
current
function returns a handle to the currently running task, panicking
if one isn’t present. This handle is then used to later notify the task that
it’s ready to make progress through the Task::notify
method.
Structs
A synchronization primitive for task notification.
A key for task-local data stored in a future’s task.
Units of work submitted to an Executor
, currently only created
internally.
Representation of a spawned future/stream.
A handle to a “task”, which represents a single lightweight “thread” of execution driving a future to completion.
A reference to a piece of data that’s accessible only within a specific
Task
.
A set insertion to trigger upon unpark
.
Traits
A concurrent set which allows for the insertion of usize
values.
A trait representing requests to poll futures.
A trait which represents a sink of notifications that a future is ready to make progress.
Functions
Returns a handle to the current task to call notify
at a later date.
Return whether the caller is running in a task (and so can use task_local!).
Spawns a future or stream, returning it and the new task responsible for running it to completion.
For the duration of the given callback, add an “unpark event” to be triggered when the task handle is used to unpark the task.