Struct tokio::sync::Semaphore [−][src]
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.
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.
Trait Implementations
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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut Tⓘ
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
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]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,