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 implementing- embedded_iotraits.
- WakerRegistration- Utility to register and wake a- Waker.
- AtomicWaker- Utility to register and wake a- Wakerfrom interrupt context.
- MultiWakerRegistration- Utility registering and waking multiple- Waker’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.