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 e648b6e
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion tokio/src/sync/semaphore.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,14 @@ fn bounds() {
}

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;

/// 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 +193,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

0 comments on commit e648b6e

Please sign in to comment.