Skip to content

Conversation

@mohsinm-dev
Copy link

@mohsinm-dev mohsinm-dev commented Nov 8, 2025

Fixes issue #141196 by correcting inconsistent documentation in threading.Semaphore.

The acquire() method documentation stated 'Exactly one thread will be awoken by each call to release()' which became incorrect when the n parameter was added to release() in Python 3.9.

Updated acquire() docs to reflect that release(n) wakes min(j,n) threads where j = waiting threads, and clarified release() docs to specify 'up to n threads' are awakened.

The fix aligns documentation with actual behavior: Semaphore.release(n) calls Condition.notify(n), which wakes exactly min(n, waiting_threads) threads.

Documentation-only change, no code modifications required.


📚 Documentation preview 📚: https://cpython-previews--141244.org.readthedocs.build/

The acquire() method documentation stated 'Exactly one thread will be awoken
by each call to release()' which became incorrect when the n parameter was
added to release() in Python 3.9.

The release() method documentation was ambiguous about behavior when
n > waiting_threads.

Changes:
- acquire(): Updated to reflect that release(n) wakes min(j,n) threads
  where j = waiting threads
- release(): Clarified that it wakes 'up to n' threads, or all available
  if fewer than n are waiting

The fix aligns documentation with actual implementation behavior in
Lib/threading.py where release(n) calls Condition.notify(n).
@mohsinm-dev mohsinm-dev force-pushed the fix-gh-141196-semaphore-docs branch from 372b843 to 7ec656e Compare November 8, 2025 16:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting review docs Documentation in the Doc dir skip news

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

1 participant