pub struct Semaphore { /* private fields */ }
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

Creates a new semaphore with the initial number of permits.

Returns the current number of available permits.

Adds n new permits to the semaphore.

The maximum number of permits is usize::MAX >> 3, and this function will panic if the limit is exceeded.

Acquires permit from the semaphore.

Tries to acquire a permit from the semaphore.

Acquires permit from the semaphore.

The semaphore must be wrapped in an Arc to call this method.

Tries to acquire a permit from the semaphore.

The semaphore must be wrapped in an Arc to call this method.

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.