Expand description
A queue for sending values between asynchronous tasks.
It can be used concurrently by multiple producers (senders) and multiple consumers (receivers), i.e. it is an “MPMC channel”.
Receivers are competing for messages. So a message that is received by one receiver is not received by any other.
This queue takes a Mutex type so that various targets can be attained. For example, a ThreadModeMutex can be used for single-core Cortex-M targets where messages are only passed between tasks running in thread mode. Similarly, a CriticalSectionMutex can also be used for single-core targets where messages are to be passed from exception mode e.g. out of an interrupt handler.
This module provides a bounded channel that has a limit on the number of messages that it can store, and if this limit is reached, trying to send another message will result in an error being returned.
Structs§
- Channel
- A bounded channel for communicating between asynchronous tasks with backpressure.
- Dynamic
Receive Future - Future returned by
DynamicReceiver::receive
. - Dynamic
Receiver - Receive-only access to a
Channel
without knowing channel size. - Dynamic
Send Future - Future returned by
DynamicSender::send
. - Dynamic
Sender - Send-only access to a
Channel
without knowing channel size. - Receive
Future - Future returned by
Channel::receive
andReceiver::receive
. - Receive
Ready Future - Future returned by
Channel::ready_to_receive
andReceiver::ready_to_receive
. - Receiver
- Receive-only access to a
Channel
. - Send
Future - Future returned by
Channel::send
andSender::send
. - Sender
- Send-only access to a
Channel
.
Enums§
- TryReceive
Error - Error returned by
try_receive
. - TrySend
Error - Error returned by
try_send
.