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 并发
1,461,990 每月下载量
用于 2,874 个 crates(834 个直接使用)
250KB
3.5K SLoC
Crossbeam
此 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
中。
crossbeam-skiplist
提供了基于无锁跳表的并发映射和集合。
使用方法
将其添加到您的Cargo.toml
[dependencies]
crossbeam = "0.8"
兼容性
Crossbeam支持至少六个月前的稳定Rust版本,每次将最低支持的Rust版本提高时,都会发布一个新版本。目前,最低支持的Rust版本是1.61。
贡献
Crossbeam欢迎来自所有人的贡献,形式包括建议、错误报告、拉取请求和反馈。💛
如果您需要贡献的想法,有几种方式可以开始
RFCs
我们还有一个RFCs存储库,用于更高层次的讨论,这是我们构思想法和提出对Crossbeam进行重大更改的地方。
学习资源
如果您想了解更多关于并发和非阻塞数据结构的信息,我们wiki中有一份学习资源列表,包括相关的博客文章、论文、视频和其他类似项目。
另一个值得参观的地方是 合并的RFC。它们包含了我们为Crossbeam引入的特性及其详细描述和理由,但请注意,其中一些书面信息现在已经过时。
行为准则
Crossbeam项目遵守Rust行为准则。这描述了所有贡献者应遵守的最小行为标准。
许可
许可协议为以下之一
- Apache License 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
一些Crossbeam子仓有额外的许可声明。有关更多信息,请查看本存储库中的其他readme文件。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,任何有意提交以包含在您的工作中的贡献,均应双重许可如上所述,无任何额外条款或条件。