本人目前的工作因为涉及到一些内存中的高并发缓存实现,有用到 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 标准 API 习惯,重构和清理现有的代码,最终是希望能说服老板用在自己的项目上。
欢迎围观,谢谢 Star 和 PR :D
1
Kilerd 2019-03-18 21:07:06 +08:00
tab 做缩进????????
|
3
pslydhh 2020-11-23 21:54:16 +08:00
果然是 Cliff Click 做的那个,用开放地址做的吧?用 Rust 写是不是会很别扭。。。?
|
4
pslydhh 2020-11-24 12:27:48 +08:00
好像没有 remove 方法吧?
|