Conqueue is yet another multi-producer, single-consumer queue (MPSC) for the Rust programming language.
To get started, add the following to your Cargo.toml
file:
toml
[dependencies]
conqueue = "0.3.0"
Then, at the root of your crate:
rust
extern crate conqueue
Finally, create a sender/receiver pair. The sender may be cloned to
allow concurrent producers, and it is both Send
and Sync
. The
receiver is Send
so it may be moved to other threads.
```rust let (tx1, mut rx) = conqueue::Queue::unbounded(); let tx2 = tx1.clone();
tx1.push(1); tx2.push(2);
while let Some(value) = rx.pop() { println!("popped: {}", value); } ```
Send
To run the tests, execute the following:
bash
cargo test
To run a benchmark for the queue, execute the following:
bash
cargo test --release -- --ignored --nocapture
To release the create, perform the following:
Cargo.toml
, bumping the version as appropriate.README.md
, adding an entry to the Release Notes, and updating the TOML snippet's version.master
.This code is largely based on majek's implementation of Michael-Scott queue. You can find the code here and a blog post here.
Conqueue is provided under the MIT license.