#队列 #mpsc #通道 #ms #发送-同步

conqueue

另一个多生产者、单消费者队列(MPSC)

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

Download history 64/week @ 2024-03-13 82/week @ 2024-03-20 70/week @ 2024-03-27 85/week @ 2024-04-03 70/week @ 2024-04-10 73/week @ 2024-04-17 88/week @ 2024-04-24 74/week @ 2024-05-01 68/week @ 2024-05-08 74/week @ 2024-05-15 82/week @ 2024-05-22 85/week @ 2024-05-29 81/week @ 2024-06-05 99/week @ 2024-06-12 86/week @ 2024-06-19 64/week @ 2024-06-26

每月下载量340
near-network中使用

MIT许可证

14KB
295

Conqueue

Crates.io Crates.io

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

  • 修复了与SyncSend 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,执行以下操作

  1. 编辑Cargo.toml,根据需要提升版本号。
  2. 编辑README.md,在发行说明中添加条目,并更新TOML片段的版本。
  3. 提交这些更改并将它们推送到master
  4. 创建并推送一个以"v"开头的标签 -- 例如 "v0.2.0"

灵感

此代码主要基于majek实现的Michael-Scott队列。您可以在这里找到代码,并在这里找到一篇博客文章。

许可证

Conqueue 在 MIT 许可证下提供。

无运行时依赖