Crates.io | bagpipe |
lib.rs | bagpipe |
version | 0.1.0 |
source | src |
created_at | 2017-09-03 01:21:59.604786 |
updated_at | 2017-09-03 01:21:59.604786 |
description | A concurrent bag datastructure. |
homepage | |
repository | https://github.com/ezrosent/allocators-rs/tree/master/bagpipe |
max_upload_size | |
id | 30332 |
size | 85,402 |
A Bagpipe
is an implementation of a concurrent pool data-structure. It
is built on top of an implementation of a concurrent queue or stack
data-structure. It shards requests for pushing and popping objects
among a small set of queues or stacks, with load balancing performed in
a manner that is low in coordination among threads. Contention is automatically
managed by unrolling tight loops within the underlying queues and allowing
threads to attempt pushing on another queue if a CAS failure occurs.
This repo also includes implementations of concurrent queues such as
the FAAArrayQueue
and the YangCrummeyQueue
. These are linearizable
non-blocking multi-producer multi-consumer queues that may be of
independent interest, as they scale better than the queues present in
the crossbeam
library (to my knowledge).