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: RawMutex, const N: usize> Semaphore for FairSemaphore<M, N>
impl<M: RawMutex, const N: usize> Semaphore for FairSemaphore<M, N>
Source§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.Auto Trait Implementations§
impl<M, const N: usize> !Freeze for FairSemaphore<M, N>
impl<M, const N: usize> !RefUnwindSafe for FairSemaphore<M, N>
impl<M, const N: usize> Send for FairSemaphore<M, N>where
M: Send,
impl<M, const N: usize> Sync for FairSemaphore<M, N>where
M: Sync,
impl<M, const N: usize> Unpin for FairSemaphore<M, N>where
M: Unpin,
impl<M, const N: usize> UnwindSafe for FairSemaphore<M, N>where
M: 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