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_iotraits.WakerRegistration- Utility to register and wake aWaker.AtomicWaker- Utility to register and wake aWakerfrom interrupt context.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.
- rwlock
- Async read-write lock.
- 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.