Skip to content

feat(spmc): add a competing queue #212

Description

@tisonkun

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions