Struct embassy_sync::semaphore::FairSemaphore
source · pub struct FairSemaphore<M, const N: usize>where
M: RawMutex,{ /* private fields */ }
Expand description
A fair Semaphore
implementation.
Tasks are allowed to acquire permits in FIFO order. A task waiting to acquire a large number of permits will prevent other tasks from acquiring any permits until its request is satisfied.
Up to N
tasks may attempt to acquire permits concurrently. If additional
tasks attempt to acquire a permit, a WaitQueueFull
error will be returned.
Implementations§
Trait Implementations§
source§impl<M, const N: usize> Default for FairSemaphore<M, N>where
M: RawMutex,
impl<M, const N: usize> Default for FairSemaphore<M, N>where
M: RawMutex,
source§impl<M: RawMutex, const N: usize> Semaphore for FairSemaphore<M, N>
impl<M: RawMutex, const N: usize> Semaphore for FairSemaphore<M, N>
§type Error = WaitQueueFull
type Error = WaitQueueFull
The error returned when the semaphore is unable to acquire the requested permits.
source§fn acquire(
&self,
permits: usize,
) -> impl Future<Output = Result<SemaphoreReleaser<'_, Self>, Self::Error>>
fn acquire( &self, permits: usize, ) -> impl Future<Output = Result<SemaphoreReleaser<'_, Self>, Self::Error>>
Asynchronously acquire one or more permits from the semaphore.
source§fn try_acquire(&self, permits: usize) -> Option<SemaphoreReleaser<'_, Self>>
fn try_acquire(&self, permits: usize) -> Option<SemaphoreReleaser<'_, Self>>
Try to immediately acquire one or more permits from the semaphore.
source§fn acquire_all(
&self,
min: usize,
) -> impl Future<Output = Result<SemaphoreReleaser<'_, Self>, Self::Error>>
fn acquire_all( &self, min: usize, ) -> impl Future<Output = Result<SemaphoreReleaser<'_, Self>, Self::Error>>
Asynchronously acquire all permits controlled by the semaphore. Read more
source§fn try_acquire_all(&self, min: usize) -> Option<SemaphoreReleaser<'_, Self>>
fn try_acquire_all(&self, min: usize) -> Option<SemaphoreReleaser<'_, Self>>
Try to immediately acquire all available permits from the semaphore, if at least
min
permits are available.