embassy-sync

Crates

git

Versions

default

Flavors

Crate embassy_sync

Source
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_io traits.
  • WakerRegistration - Utility to register and wake a Waker.
  • AtomicWaker - A variant of WakerRegistration accessible using a non-mut API.
  • 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.
  • A queue for sending values between asynchronous tasks.
  • Synchronization primitive for initializing a value once, allowing others to get a reference to the value.
  • Async mutex.
  • Synchronization primitive for initializing a value once, allowing others to await a reference to the value.
  • Async byte stream pipe.
  • A queue for sending values between asynchronous tasks.
  • Implementation of PubSubChannel, a queue where published messages get received by all subscribers.
  • A synchronization primitive for controlling access to a pool of resources.
  • A synchronization primitive for passing the latest value to a task.
  • Async low-level wait queues
  • A synchronization primitive for passing the latest value to multiple receivers.
  • A zero-copy queue for sending values between asynchronous tasks.