Struct grafix_toolbox::uses::Async::sync::Semaphore [−]
pub struct Semaphore { /* fields omitted */ }Expand description
A counter for limiting the number of concurrent operations.
Implementations
impl Semaphore
impl SemaphoreCreates a new semaphore with a limit of n concurrent operations.
Examples
use async_lock::Semaphore; let s = Semaphore::new(5);
pub fn try_acquire(&self) -> Option<SemaphoreGuard<'_>>
pub fn try_acquire(&self) -> Option<SemaphoreGuard<'_>>Attempts to get a permit for a concurrent operation.
If the permit could not be acquired at this time, then None is returned. Otherwise, a
guard is returned that releases the mutex when dropped.
Examples
use async_lock::Semaphore; let s = Semaphore::new(2); let g1 = s.try_acquire().unwrap(); let g2 = s.try_acquire().unwrap(); assert!(s.try_acquire().is_none()); drop(g2); assert!(s.try_acquire().is_some());
pub async fn acquire(&'_ self) -> SemaphoreGuard<'_>
pub async fn acquire(&'_ self) -> SemaphoreGuard<'_>Waits for a permit for a concurrent operation.
Returns a guard that releases the permit when dropped.
Examples
use async_lock::Semaphore; let s = Semaphore::new(2); let guard = s.acquire().await;
impl Semaphore
impl Semaphorepub fn try_acquire_arc(self: &Arc<Semaphore>) -> Option<SemaphoreGuardArc>
pub fn try_acquire_arc(self: &Arc<Semaphore>) -> Option<SemaphoreGuardArc>Attempts to get an owned permit for a concurrent operation.
If the permit could not be acquired at this time, then None is returned. Otherwise, an
owned guard is returned that releases the mutex when dropped.
Examples
use async_lock::Semaphore; use std::sync::Arc; let s = Arc::new(Semaphore::new(2)); let g1 = s.try_acquire_arc().unwrap(); let g2 = s.try_acquire_arc().unwrap(); assert!(s.try_acquire_arc().is_none()); drop(g2); assert!(s.try_acquire_arc().is_some());
pub async fn acquire_arc(self: &'_ Arc<Semaphore>) -> SemaphoreGuardArc
pub async fn acquire_arc(self: &'_ Arc<Semaphore>) -> SemaphoreGuardArcWaits for an owned permit for a concurrent operation.
Returns a guard that releases the permit when dropped.
Examples
use async_lock::Semaphore; use std::sync::Arc; let s = Arc::new(Semaphore::new(2)); let guard = s.acquire_arc().await;
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Semaphoreimpl UnwindSafe for SemaphoreBlanket Implementations
Mutably borrows from an owned value. Read more
type Output = T
type Output = TShould always be Self
The inverse inclusion map: attempts to construct self from the equivalent element of its
superset. Read more
pub fn is_in_subset(&self) -> bool
pub fn is_in_subset(&self) -> boolChecks if self is actually part of its subset T (and can be converted to it).
pub fn to_subset_unchecked(&self) -> SS
pub fn to_subset_unchecked(&self) -> SSUse with care! Same as self.to_subset but without any property checks. Always succeeds.
pub fn from_subset(element: &SS) -> SP
pub fn from_subset(element: &SS) -> SPThe inclusion map: converts self to the equivalent element of its superset.
pub fn vzip(self) -> V