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.Watch
- Signalling latest value to multiple consumers.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.LazyLock
- A value which is initialized on the first access
§Interoperability
Futures from this crate can run on any executor.
Modules§
- blocking_
mutex - Blocking mutex.
- channel
- A queue for sending values between asynchronous tasks.
- lazy_
lock - Synchronization primitive for initializing a value once, allowing others to get a reference to the value.
- mutex
- Async mutex.
- once_
lock - Synchronization primitive for initializing a value once, allowing others to await a reference to the value.
- pipe
- Async byte stream pipe.
- priority_
channel - A queue for sending values between asynchronous tasks.
- pubsub
- Implementation of PubSubChannel, a queue where published messages get received by all subscribers.
- semaphore
- A synchronization primitive for controlling access to a pool of resources.
- signal
- A synchronization primitive for passing the latest value to a task.
- waitqueue
- Async low-level wait queues
- watch
- A synchronization primitive for passing the latest value to multiple receivers.
- zerocopy_
channel - A zero-copy queue for sending values between asynchronous tasks.