Apache Asyncband (Incubating) is an effort undergoing incubation at the Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC. Please read the DISCLAIMER.
Asyncband collects composable, runtime-agnostic concurrency building blocks informed by several existing implementations. Only components that draw on external designs or code are listed here.
barrier::Barrieris inspired bystd::sync::Barrierandtokio::sync::Barrier, with a different implementation based on the internalWaitSetprimitive.- The single-future polling loop in
blockingis adapted frompollster, its parker caching strategy followsfutures-lite, and its private parker state machine is adapted fromparking2.2.1. condvar::Condvaris inspired bystd::sync::Condvarandasync_std::sync::Condvar, with a fair FIFO waiter queue and standard non-buffered notification semantics.latch::Latchis inspired bylatches, with a different implementation based on the internalCountdownStateprimitive.mutex::Mutexis derived fromtokio::sync::Mutex.once::OnceCellis derived fromtokio::sync::OnceCell, but uses Asyncband's semaphore implementation.once::OnceMapis inspired byuv-once-map, with a redesigned interface and implementation.oneshot::channelis derived from theoneshotcrate, with significant simplifications because Asyncband does not provide synchronized receive operations.poolis ported fromfastpool, which is derived fromdeadpool, while keeping Fastpool's runtime-agnostic design and caller-side timeout composition.rwlock::RwLockis derived fromtokio::sync::RwLock, but accepts anyNonZeroUsizeasmax_readersinstead of Tokio's restricted range.semaphore::Semaphoreis derived fromtokio::sync::Semaphore, but omitsclose, avoids Tokio's fixed maximum-permit constant, and adds operations such asreduce_permitsfor Asyncband's use cases.waitgroup::WaitGroupis inspired bywaitgroup-rs, with a different API and an implementation based on the internalCountdownStateprimitive.