34 个版本

0.8.4 2024 年 1 月 8 日
0.8.3 2023 年 12 月 24 日
0.8.2 2022 年 7 月 23 日
0.8.1 2021 年 5 月 30 日
0.1.6 2015 年 11 月 2 日

#9 in 并发

Download history 311833/week @ 2024-04-24 292523/week @ 2024-05-01 303794/week @ 2024-05-08 313601/week @ 2024-05-15 306352/week @ 2024-05-22 321485/week @ 2024-05-29 307110/week @ 2024-06-05 323703/week @ 2024-06-12 314871/week @ 2024-06-19 329808/week @ 2024-06-26 303462/week @ 2024-07-03 337924/week @ 2024-07-10 338544/week @ 2024-07-17 357946/week @ 2024-07-24 336700/week @ 2024-07-31 367892/week @ 2024-08-07

1,461,990 每月下载量
用于 2,874 个 crates(834 个直接使用)

MIT/Apache

250KB
3.5K SLoC

Crossbeam

Build Status License Cargo Documentation Rust 1.61+ chat

此 crate 提供了一组并发编程工具

原子操作

  • AtomicCell,线程安全的可变内存位置。(no_std)
  • AtomicConsume,用于从原始原子类型中读取,具有“消费”顺序。(no_std)

数据结构

  • deque,用于构建任务调度器的窃取工作队列。
  • ArrayQueue,一个有界 MPMC 队列,在构造时分配一个固定容量的缓冲区。(alloc)
  • SegQueue,一个无界 MPMC 队列,按需分配小的缓冲区,段。(alloc)

内存管理

  • epoch,基于周期的垃圾收集器。(alloc)

线程同步

  • channel,用于消息传递的多生产者多消费者通道。
  • Parker,线程停靠原语。
  • ShardedLock,具有快速并发读的碎片化读写锁。
  • WaitGroup,用于同步某些计算的开始或结束。

实用工具

  • Backoff,用于在自旋循环中进行指数退避。(no_std)
  • CachePadded,用于填充和对齐一个值到缓存行长度。(no_std)
  • scope,用于创建借用栈上局部变量的线程。

带有(no_std)标记的特性可以在no_std环境中使用。
带有(alloc)标记的特性可以在no_std环境中使用,但前提是启用了alloc特性。

软件包

主要的crossbeam软件包只是重新导出了较小子软件包中的工具。

  • crossbeam-channel提供了用于消息传递的多生产者多消费者通道。
  • crossbeam-deque提供了工作窃取双端队列,主要用于构建任务调度器。
  • crossbeam-epoch提供了基于纪元的垃圾回收,用于构建并发数据结构。
  • crossbeam-queue提供了可以在线程间共享的并发队列。
  • crossbeam-utils提供了原子操作、同步原语、作用域线程和其他实用工具。

还有一个实验性子软件包尚未包含在crossbeam中。

使用方法

将其添加到您的Cargo.toml

[dependencies]
crossbeam = "0.8"

兼容性

Crossbeam支持至少六个月前的稳定Rust版本,每次将最低支持的Rust版本提高时,都会发布一个新版本。目前,最低支持的Rust版本是1.61。

贡献

Crossbeam欢迎来自所有人的贡献,形式包括建议、错误报告、拉取请求和反馈。💛

如果您需要贡献的想法,有几种方式可以开始

RFCs

我们还有一个RFCs存储库,用于更高层次的讨论,这是我们构思想法和提出对Crossbeam进行重大更改的地方。

您欢迎参与任何开放的问题拉取请求

学习资源

如果您想了解更多关于并发和非阻塞数据结构的信息,我们wiki中有一份学习资源列表,包括相关的博客文章、论文、视频和其他类似项目。

另一个值得参观的地方是 合并的RFC。它们包含了我们为Crossbeam引入的特性及其详细描述和理由,但请注意,其中一些书面信息现在已经过时。

行为准则

Crossbeam项目遵守Rust行为准则。这描述了所有贡献者应遵守的最小行为标准。

许可

许可协议为以下之一

由您选择。

一些Crossbeam子仓有额外的许可声明。有关更多信息,请查看本存储库中的其他readme文件。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的,任何有意提交以包含在您的工作中的贡献,均应双重许可如上所述,无任何额外条款或条件。

依赖