Skip to content

Latest commit

 

History

History
18 lines (15 loc) · 2.93 KB

File metadata and controls

18 lines (15 loc) · 2.93 KB

History

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::Barrier is inspired by std::sync::Barrier and tokio::sync::Barrier, with a different implementation based on the internal WaitSet primitive.
  • The single-future polling loop in blocking is adapted from pollster, its parker caching strategy follows futures-lite, and its private parker state machine is adapted from parking 2.2.1.
  • condvar::Condvar is inspired by std::sync::Condvar and async_std::sync::Condvar, with a fair FIFO waiter queue and standard non-buffered notification semantics.
  • latch::Latch is inspired by latches, with a different implementation based on the internal CountdownState primitive.
  • mutex::Mutex is derived from tokio::sync::Mutex.
  • once::OnceCell is derived from tokio::sync::OnceCell, but uses Asyncband's semaphore implementation.
  • once::OnceMap is inspired by uv-once-map, with a redesigned interface and implementation.
  • oneshot::channel is derived from the oneshot crate, with significant simplifications because Asyncband does not provide synchronized receive operations.
  • pool is ported from fastpool, which is derived from deadpool, while keeping Fastpool's runtime-agnostic design and caller-side timeout composition.
  • rwlock::RwLock is derived from tokio::sync::RwLock, but accepts any NonZeroUsize as max_readers instead of Tokio's restricted range.
  • semaphore::Semaphore is derived from tokio::sync::Semaphore, but omits close, avoids Tokio's fixed maximum-permit constant, and adds operations such as reduce_permits for Asyncband's use cases.
  • waitgroup::WaitGroup is inspired by waitgroup-rs, with a different API and an implementation based on the internal CountdownState primitive.