Skip to content

Commit

Permalink
sync: Expose Semaphore::MAX_PERMITS and document some panics
Browse files Browse the repository at this point in the history
Resolves #5129
  • Loading branch information
vi committed Oct 29, 2022
1 parent 3886a3e commit b098029
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion tokio/src/sync/semaphore.rs
Expand Up @@ -124,6 +124,8 @@ fn bounds() {

impl Semaphore {
/// Creates a new semaphore with the initial number of permits.
///
/// Panics if `permits` exceeds [`Semaphore::MAX_PERMITS`].
#[track_caller]
pub fn new(permits: usize) -> Self {
#[cfg(all(tokio_unstable, feature = "tracing"))]
Expand Down Expand Up @@ -186,7 +188,7 @@ impl Semaphore {

/// 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.
/// The maximum number of permits is [`Semaphore::MAX_PERMITS`], and this function will panic if the limit is exceeded.
pub fn add_permits(&self, n: usize) {
self.ll_sem.release(n);
}
Expand Down Expand Up @@ -680,3 +682,10 @@ impl Drop for OwnedSemaphorePermit {
self.sem.add_permits(self.permits as usize);
}
}

impl Semaphore {
/// The maximum number of permits which a semaphore can hold.
///
/// Exceeding this limit typically results in a panic.
pub const MAX_PERMITS : usize = super::batch_semaphore::Semaphore::MAX_PERMITS;
}

0 comments on commit b098029

Please sign in to comment.