Struct embassy_sync::blocking_mutex::Mutex
source · pub struct Mutex<R, T: ?Sized> { /* private fields */ }
Expand description
Blocking mutex (not async)
Provides a blocking mutual exclusion primitive backed by an implementation of raw::RawMutex
.
Which implementation you select depends on the context in which you’re using the mutex, and you can choose which kind of interior mutability fits your use case.
Use CriticalSectionMutex
when data can be shared between threads and interrupts.
Use NoopMutex
when data is only shared between tasks running on the same executor.
Use [ThreadModeMutex
] when data is shared between tasks running on the same executor but you want a global singleton.
In all cases, the blocking mutex is intended to be short lived and not held across await points.
Use the async Mutex
if you need a lock that is held across await points.
Implementations§
source§impl<R, T> Mutex<R, T>
impl<R, T> Mutex<R, T>
sourcepub const fn const_new(raw_mutex: R, val: T) -> Mutex<R, T>
pub const fn const_new(raw_mutex: R, val: T) -> Mutex<R, T>
Creates a new mutex based on a pre-existing raw mutex.
This allows creating a mutex in a constant context on stable Rust.
sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Consumes this mutex, returning the underlying data.
source§impl<T> Mutex<CriticalSectionRawMutex, T>
impl<T> Mutex<CriticalSectionRawMutex, T>
sourcepub fn borrow<'cs>(&'cs self, _cs: CriticalSection<'cs>) -> &'cs T
pub fn borrow<'cs>(&'cs self, _cs: CriticalSection<'cs>) -> &'cs T
Borrows the data for the duration of the critical section