#lock-free #atomic #data-structures #shared-ptr #thread-local-storage #hazard-pointers

无 std lock_freedom

此软件包提供并发数据结构以及作为危险指针替代方案的 ABA 问题解决方案。

1 个不稳定版本

0.1.0 2023 年 7 月 11 日

922并发

MIT 许可证

265KB
5K SLoC

lock_freedom

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 的早期版本使用全局焚化器。目前,使用的是对象级焚化器。

此软件包正在开发中,并计划添加一些结构。我们目前有

性能指南

为了实现无锁操作更好的时间性能,建议避免使用全局锁定,如堆分配。

依赖项