Struct tokio::sync::Semaphore[][src]

pub struct Semaphore { /* fields omitted */ }
Expand description

Counting semaphore performing asynchronous permit aquisition.

A semaphore maintains a set of permits. Permits are used to synchronize access to a shared resource. A semaphore differs from a mutex in that it can allow more than one concurrent caller to access the shared resource at a time.

When acquire is called and the semaphore has remaining permits, the function immediately returns a permit. However, if no remaining permits are available, acquire (asynchronously) waits until an outstanding permit is dropped. At this point, the freed permit is assigned to the caller.

Implementations

impl Semaphore[src]

pub fn new(permits: usize) -> Self[src]

Creates a new semaphore with the initial number of permits

pub fn available_permits(&self) -> usize[src]

Returns the current number of available permits

pub fn add_permits(&self, n: usize)[src]

Adds n new permits to the semaphore.

pub async fn acquire(&self) -> SemaphorePermit<'_>[src]

Acquires permit from the semaphore

pub fn try_acquire(&self) -> Result<SemaphorePermit<'_>, TryAcquireError>[src]

Tries to acquire a permit form the semaphore

Trait Implementations

impl Debug for Semaphore[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

Auto Trait Implementations

impl !RefUnwindSafe for Semaphore

impl Send for Semaphore

impl Sync for Semaphore

impl Unpin for Semaphore

impl !UnwindSafe for Semaphore

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.