feat(spmc): add a competing queue
- Dominant language
- Rust
- Stars
- 269
- Forks
- 38
- Avg merge
- 16h 44m
- Merged PRs (30d)
- 102
Description
Parent: #206
## Goal
Add bounded and unbounded SPMC queues with one non-cloneable producer and cloneable receivers competing for each accepted value.
## Direction
- Keep the public path at `asyncband::spmc`.
- Preserve a static single-producer contract through a non-cloneable sender and exclusive send methods.
- Reuse the competing-consumer core only when doing so preserves the simpler public capability model and acceptable performance.
## Acceptance criteria
- Cover exact-once delivery, receiver competition, cancellation handoff, disconnection, and bounded backpressure.
- Benchmark the skewed 1P/8C shape that exposes wake-all thundering-herd behavior.
- Avoid sustained order-of-magnitude regressions against comparable competing-consumer channels.
Depends on #208 and should follow the competing-consumer design established in #211.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the asyncband::spmc public entry point, then read the dependency in #208 and the competing-consumer design in #211. Define bounded and unbounded SPMC queues with exact-once competing delivery, cancellation handoff, disconnection, and backpressure. Validate the 1P/8C benchmark and avoid sustained order-of-magnitude regressions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100