Crate embassy_sync
source ·Expand description
§embassy-sync
An Embassy project.
Synchronization primitives and data structures with async support:
Channel
- A Multiple Producer Multiple Consumer (MPMC) channel. Each message is only received by a single consumer.PriorityChannel
- A Multiple Producer Multiple Consumer (MPMC) channel. Each message is only received by a single consumer. Higher priority items are shifted to the front of the channel.PubSubChannel
- A broadcast channel (publish-subscribe) channel. Each message is received by all consumers.Signal
- Signalling latest value to a single consumer.Mutex
- Mutex for synchronizing state between asynchronous tasks.Pipe
- Byte stream implementingembedded_io
traits.WakerRegistration
- Utility to register and wake aWaker
.AtomicWaker
- A variant ofWakerRegistration
accessible using a non-mut API.MultiWakerRegistration
- Utility registering and waking multipleWaker
’s.
§Interoperability
Futures from this crate can run on any executor.
Modules§
- Blocking mutex.
- A queue for sending values between asynchronous tasks.
- Async mutex.
- Synchronization primitive for initializing a value once, allowing others to await a reference to the value.
- Async byte stream pipe.
- A queue for sending values between asynchronous tasks.
- Implementation of PubSubChannel, a queue where published messages get received by all subscribers.
- A synchronization primitive for controlling access to a pool of resources.
- A synchronization primitive for passing the latest value to a task.
- Async low-level wait queues
- A zero-copy queue for sending values between asynchronous tasks.