Parent: #206
Goal
Add bounded and unbounded MPMC queues in which cloneable receivers compete for each value and every accepted value is delivered exactly once.
Direction
- Keep the public path at
asyncband::mpmc.
- Use targeted waiter notification with cancellation handoff rather than waking every sender or receiver.
- Keep bounded capacity strict and unbounded sends synchronous.
- Keep implementation policy and storage types private.
Acceptance criteria
- Cover clone counts, ordering, disconnection, draining, cancellation, exact-once delivery, and bounded progress under contention.
- Benchmark 1P/1C, 1P/8C, 8P/1C, and 8P/8C for bounded and unbounded modes.
- Avoid sustained order-of-magnitude regressions against semantically comparable MPMC channels.
Depends on #208. The implementation may share narrowly scoped machinery established by #209 without forcing single- and competing-consumer paths into one generic policy framework.
Parent: #206
Goal
Add bounded and unbounded MPMC queues in which cloneable receivers compete for each value and every accepted value is delivered exactly once.
Direction
asyncband::mpmc.Acceptance criteria
Depends on #208. The implementation may share narrowly scoped machinery established by #209 without forcing single- and competing-consumer paths into one generic policy framework.