#数据结构 #原子操作 #危害指针 #共享指针 #线程局部存储

lockfree

该软件包提供并发数据结构和一种作为危害指针替代方案的 ABA 问题解决方案

11 个版本 (4 个破坏性更新)

使用旧的 Rust 2015

0.5.1 2018 年 11 月 18 日
0.5.0 2018 年 11 月 17 日
0.4.1 2018 年 11 月 11 日
0.3.2 2018 年 11 月 4 日
0.1.1 2018 年 6 月 15 日

并发 中排名第 460

Download history 3126/week @ 2024-03-14 4153/week @ 2024-03-21 4159/week @ 2024-03-28 3968/week @ 2024-04-04 4394/week @ 2024-04-11 4441/week @ 2024-04-18 3637/week @ 2024-04-25 3726/week @ 2024-05-02 3232/week @ 2024-05-09 3667/week @ 2024-05-16 3592/week @ 2024-05-23 4216/week @ 2024-05-30 4051/week @ 2024-06-06 4001/week @ 2024-06-13 4196/week @ 2024-06-20 3167/week @ 2024-06-27

每月下载量 16,252
116 软件包使用(直接使用 16 个)

MIT 许可证

260KB
5.5K SLoC

lockfree

Rust 的无锁数据结构。

我们目前有

  • 对象级别的线程局部存储
  • 映射
  • 集合
  • 队列
  • SPSC、MPSC、SPMC 和 MPMC 通道

最新提交的文档

https://bzim.gitlab.io/lockfree/lockfree/

变更日志

查看 CHANGELOG.md

贡献

查看 CONTRIBUTING.md

基准测试

查看 BENCHMARKS.md

C11 焚烧器实现

https://gitlab.com/bzim/c11-incinerator/


lib.rs:

一个提供无锁数据结构和与指针相关的 "ABA 问题" 解决方案的软件包。

焚烧器是尝试解决与指针释放相关的 "ABA 问题" 的 API。使用焚烧器时,每个线程都有一个本地垃圾列表。释放共享对象包括首先从共享上下文中删除指针,然后将指针添加到垃圾列表中。检查 "暂停计数器"。如果计数器为零,则删除整个列表,否则稍后删除列表。

此计数器记录焚烧器被要求 "暂停" 的次数。线程可能暂停焚烧器以加载和使用共享指针,这就是为什么在删除之前从共享上下文中删除指针很重要的原因。lockfree 的早期版本使用全局焚烧器。目前,使用的是每个对象的焚烧器。

该软件包正在开发中,并计划实现一些结构。我们有

性能指南

为了实现无锁的高性能,建议避免全局锁定操作,如堆分配。

依赖项