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

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions