semaphore: panic on negative capacity

NewWeighted currently accepts a negative capacity, creating a
semaphore for which even a zero-weight acquisition cannot succeed.
Reject negative capacities at construction time while continuing to
allow zero capacity.

Updates golang/go#80183

Change-Id: Id819efed370bb81e8bf13891d781f90e298a2a07
Reviewed-on: https://go-review.googlesource.com/c/sync/+/808920
Auto-Submit: Alan Donovan <adonovan@google.com>
Reviewed-by: race quite <quiterace@gmail.com>
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
Reviewed-by: David Chase <drchase@google.com>
2 files changed
tree: 2dd4227e3ab48185ba1fe0dedf7e89775de4cef9
  1. errgroup/
  2. semaphore/
  3. singleflight/
  4. syncmap/
  5. codereview.cfg
  6. CONTRIBUTING.md
  7. go.mod
  8. LICENSE
  9. PATENTS
  10. README.md
README.md

Go Sync

Go Reference

This repository provides Go concurrency primitives in addition to the ones provided by the language and “sync” and “sync/atomic” packages.

Report Issues / Send Patches

This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://go.dev/doc/contribute.

The git repository is https://go.googlesource.com/sync.

The main issue tracker for the sync repository is located at https://go.dev/issues. Prefix your issue with “x/sync:” in the subject line, so it is easy to find.