mirror of
https://github.com/embassy-rs/embassy.git
synced 2024-10-30 05:40:55 +00:00
c9acebf783
- `acquire` and `acquire_all` futures were `!Send`, even for `M: RawMutex + Send` due to the captured `Cell`. - If multiple `acquire` tasks were queued, waking the first would not wake the second, even if there were permits remaining after the first `acquire` completed. |
||
---|---|---|
.. | ||
src | ||
build.rs | ||
Cargo.toml | ||
CHANGELOG.md | ||
README.md |
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.