Skip to main content

Crate arty_executor

Crate arty_executor 

Source
Expand description

Async task executor for the Arty Runtime.

The purpose of the executor is to ensure that async tasks registered with the executor make progress, quickly and efficiently reacting to await statements that complete.

The executor is a building block for an application runtime that provides foundational capabilities like task execution, multithreaded task management, I/O, timers, and more. Application logic may encounter JoinHandles but otherwise has no direct interaction with the executor.

§Design tenets

The executor is single-threaded. If you want to execute tasks on multiple threads, you need to run multiple executors on different threads. If you wish to observe task results across threads, you need to create a mechanism to ship the results across thread boundaries.

Tasks cannot be taken out of the executor - the only way for them to end is to either end naturally (with the future returning Poll::Ready) or for the executor to be shut down. Not only is there no “remove” function but similarly, there is no “cancel” function - once a task has started executing, the only thing that can terminate it is the task itself, by completing.

In a steady state, the executor is allocation-free, as all memory used by the executor is reused for new tasks when old ones complete.

Modules§

testing
Functionality for testing, examples and benchmarks.

Structs§

Executor
The async task executor for a single thread.
ExecutorBuilder
Builds an instance of Executor.
JoinHandle
A handle that can be used to await the completion of a task and to receive its result R.
TaskSet
Represents the set of tasks currently registered with an executor and allows new tasks to be registered.

Enums§

CycleOutcome
The outcome of executing one processing cycle of the async task executor.