Conqueue
Conqueue is yet another multi-producer, single-consumer queue (MPSC) for the Rust programming language.
Getting Started
To get started, add the following to your Cargo.toml
file:
[]
= "0.3.0"
Then, at the root of your crate:
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.
let = unbounded;
let tx2 = tx1.clone;
tx1.push;
tx2.push;
while let Some = rx.pop
Release Notes
0.3.0 - 2019-09-03
- Use compare_exchange, allowing push with a single atomic instruction in certain circumstances
- Fix a small memory leak when all related senders/receivers are dropped
0.2.1 - 2019-08-29
- Republish to fix README.md on Crates.io
0.2.0 - 2019-08-29
- Items that are pushed into a queue are now dropped if there is no receiver
0.1.1 - 2019-07-30
- Senders should be
Send
0.1.0 - 2019-07-30
- Initial release. Likely not production ready.
Developer Notes
To run the tests, execute the following:
To run a benchmark for the queue, execute the following:
To release the create, perform the following:
- Edit
Cargo.toml
, bumping the version as appropriate. - Edit
README.md
, adding an entry to the Release Notes, and updating the TOML snippet's version. - Commit these changes and push them to
master
. - Create and push a tag that starts with "v" -- e.g. "v0.2.0"
Inspiration
This code is largely based on majek's implementation of Michael-Scott queue. You can find the code here and a blog post here.
License
Conqueue is provided under the MIT license.