2022-08-23 11:54:40 +00:00
# embassy-sync
2022-10-04 14:38:11 +00:00
An [Embassy ](https://embassy.dev ) project.
Synchronization primitives and data structures with async support:
2022-08-23 11:54:40 +00:00
- [`Channel` ](channel::Channel ) - A Multiple Producer Multiple Consumer (MPMC) channel. Each message is only received by a single consumer.
2024-08-18 08:36:04 +00:00
- [`PriorityChannel` ](channel::priority_channel::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.
2022-08-23 11:54:40 +00:00
- [`PubSubChannel` ](pubsub::PubSubChannel ) - A broadcast channel (publish-subscribe) channel. Each message is received by all consumers.
- [`Signal` ](signal::Signal ) - Signalling latest value to a single consumer.
2024-10-05 10:24:17 +00:00
- [`Watch` ](watch::Watch ) - Signalling latest value to multiple consumers.
2022-10-04 14:38:11 +00:00
- [`Mutex` ](mutex::Mutex ) - Mutex for synchronizing state between asynchronous tasks.
2022-08-23 11:54:40 +00:00
- [`Pipe` ](pipe::Pipe ) - Byte stream implementing `embedded_io` traits.
- [`WakerRegistration` ](waitqueue::WakerRegistration ) - Utility to register and wake a `Waker` .
- [`AtomicWaker` ](waitqueue::AtomicWaker ) - A variant of `WakerRegistration` accessible using a non-mut API.
- [`MultiWakerRegistration` ](waitqueue::MultiWakerRegistration ) - Utility registering and waking multiple `Waker` 's.
2024-07-27 09:49:02 +00:00
- [`LazyLock` ](lazy_lock::LazyLock ) - A value which is initialized on the first access
2022-10-04 14:38:11 +00:00
## Interoperability
Futures from this crate can run on any executor.