6个版本 (3个重大变更)
0.4.0 | 2021年1月24日 |
---|---|
0.3.0 | 2019年9月3日 |
0.2.1 | 2019年8月29日 |
0.1.1 | 2019年7月31日 |
在并发类别中排名第551
每月下载量340次
在near-network中使用
14KB
295 行
Conqueue
Conqueue是Rust编程语言的另一个多生产者、单消费者队列(MPSC)。
入门指南
要开始使用,请将以下内容添加到您的Cargo.toml
文件中
[dependencies]
conqueue = "0.4.0"
然后,在您的crate根目录下
extern crate conqueue
最后,创建一个发送者/接收者对。发送者可以被克隆以允许并发生产者,它既是Send
也是Sync
。接收者是Send
,因此它可以移动到其他线程。
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);
}
发行说明
0.4.0 - 2021-01-24
- 修复了与
Sync
、Send
trait界限相关的重大问题,感谢@JOE1994
0.3.0 - 2019-09-03
- 在特定情况下使用compare_exchange,允许通过单个原子指令进行推送
- 修复了当所有相关的发送者/接收者都被丢弃时的微小内存泄漏
0.2.1 - 2019-08-29
- 重新发布以修复Crates.io上的README.md
0.2.0 - 2019-08-29
- 如果没有任何接收者,则现在将丢弃推入队列的项目
0.1.1 - 2019-07-30
- 发送者应该是
Send
0.1.0 - 2019-07-30
- 初始发布。可能不适合生产环境。
开发者说明
要运行测试,执行以下操作
cargo test
要运行队列的基准测试,执行以下操作
cargo test --release -- --ignored --nocapture
要发布crate,执行以下操作
- 编辑
Cargo.toml
,根据需要提升版本号。 - 编辑
README.md
,在发行说明中添加条目,并更新TOML片段的版本。 - 提交这些更改并将它们推送到
master
。 - 创建并推送一个以"v"开头的标签 -- 例如 "v0.2.0"
灵感
此代码主要基于majek实现的Michael-Scott队列。您可以在这里找到代码,并在这里找到一篇博客文章。
许可证
Conqueue 在 MIT 许可证下提供。