apache / apache/asyncband

feat(spmc): add a competing queue

Open
#212 1 comment 0 reactions 0 assignees View on GitHub
enhancement good first issue help wanted
Dominant language
Rust
Stars
269
Forks
38
Avg merge
16h 44m
Merged PRs (30d)
102

Description

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.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the asyncband::spmc public entry point, then read the dependency in #208 and the competing-consumer design in #211. Define bounded and unbounded SPMC queues with exact-once competing delivery, cancellation handoff, disconnection, and backpressure. Validate the 1P/8C benchmark and avoid sustained order-of-magnitude regressions.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.