pub struct Signal<M, T>where
M: RawMutex,{ /* private fields */ }
Expand description
Single-slot signaling primitive.
This is similar to a Channel
with a buffer size of 1, except
“sending” to it (calling Signal::signal
) when full will overwrite the previous value instead
of waiting for the receiver to pop the previous value.
It is useful for sending data between tasks when the receiver only cares about the latest data, and therefore it’s fine to “lose” messages. This is often the case for “state” updates.
For more advanced use cases, you might want to use Channel
instead.
Signals are generally declared as static
s and then borrowed as required.
use embassy_sync::signal::Signal;
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
enum SomeCommand {
On,
Off,
}
static SOME_SIGNAL: Signal<CriticalSectionRawMutex, SomeCommand> = Signal::new();
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl<M, T> !Freeze for Signal<M, T>
impl<M, T> !RefUnwindSafe for Signal<M, T>
impl<M, T> Send for Signal<M, T>
impl<M, T> Sync for Signal<M, T>
impl<M, T> Unpin for Signal<M, T>
impl<M, T> UnwindSafe for Signal<M, T>where
M: UnwindSafe,
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more