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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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