cpu高 rust腐蚀_介绍一个开发中的 Rust 版 lock free concurrent hashmap

本人目前的工作因为涉及到一些内存中的高并发缓存实现,有用到 Cliff Click 大神早年的作品,即 Java 版的NonblockingHashMap, 号称可以 scale 到 768 个 CPU。其思路主要是基于基础的 CAS(比较-交换)原语和精心设计的状态机,来实现 lock-free 的高并发哈希表。当然 lock free 不等于 wait free,但细节这里就不讨论了。

因为自己对 Rust 很感兴趣,就想把 Java 实现移植到 Rust。在 github 上找到 5 年前已经有人做过了类似的工作, 但是是基于当时的 Rust 0.10 ,现在已经完全无法编译,5 年内也没有任何更新。所以就自己 fork 了一份,一边学 rust 一边改旧代码一边加测试,现在已经可以运行原有的一些简单的用例了:

https://github.com/rlei/nonblockinghashmap

我目前所做的改动:

  • Rust 0.10 => 1.33 的各种更新与修正:Box 语法,transmute 全部改写为 Box::into_raw/from_raw,减少 unsafe使用,解决各种废弃 API 的使用……
  • 增加测试并修正发现的 segfault
  • cargo 项目定义及标准的代码目录组织(虽然我是 git mv 在移动文件,但因为同时修改内容很多,还是被 git 认为是 rm 和 add,并不是我故意要抹掉原作者的 git history)
  • Travis CI

目前离实用还差得很远,最严重的问题是原作者在从Java代码移植到rust的时候基本没考虑在unsafe代码里管理内存的问题,有大量的内存泄漏,随便一跑就OOM了。其他正确性和功能性方面也还有很多工作要做。

下一步的计划是增加测试、修正问题,修改接口更符合 rust 标准 API 习惯,重构和清理现有的代码,最终是希望能说服老板用在自己的项目上。

欢迎围观,谢谢 Star 和 PR :D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值