Crate simple_async_local_executor[−][src]
Single-threaded polling-based executor suitable for use in games, embedded systems or WASM.
This crate provides an executor to run async functions in single-threaded
environment with deterministic execution. To do so, the executor provides a Executor::step()
method that polls all non-blocked tasks exactly once. The executor also provides events
that can be waited upon. These events are referred to by the EventHandle
type which is
instantiated by calling Executor::create_event_handle()
, and can be waited on by
creating EventFuture
by calling the Executor::event()
method. They can be activated
by calling the Executor::notify_event()
method.
Example
let executor = Executor::default(); let events = [executor.create_event_handle(), executor.create_event_handle()]; async fn wait_event(events: [EventHandle; 2], executor: Executor) { executor.event(&events[0]).await; executor.event(&events[1]).await; } executor.spawn(wait_event(events.clone(), executor.clone())); assert_eq!(executor.step(), true); assert_eq!(executor.step(), true); executor.notify_event(&events[0]); assert_eq!(executor.step(), true); executor.notify_event(&events[1]); assert_eq!(executor.step(), false);
Structs
EventFuture | A future to await an event |
EventHandle | A handle for an event, can be kept and cloned around |
Executor | Single-threaded polling-based executor |