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.
Parent: #206
Goal
Add bounded and unbounded SPMC queues with one non-cloneable producer and cloneable receivers competing for each accepted value.
Direction
asyncband::spmc.Acceptance criteria
Depends on #208 and should follow the competing-consumer design established in #211.