Struct tokio::sync::Semaphore [−][src]
pub struct Semaphore { /* fields omitted */ }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]
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.
The maximum number of permits is usize::MAX >> 3, and this function will panic if the limit is exceeded.
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 from the semaphore.
pub async fn acquire_owned(self: Arc<Self>) -> OwnedSemaphorePermit[src]
Acquires permit from the semaphore.
The semaphore must be wrapped in an Arc to call this method.
pub fn try_acquire_owned(
self: Arc<Self>
) -> Result<OwnedSemaphorePermit, TryAcquireError>[src]
self: Arc<Self>
) -> Result<OwnedSemaphorePermit, TryAcquireError>
Tries to acquire a permit from the semaphore.
The semaphore must be wrapped in an Arc to call this method.