#lock-free #slotmap #map #write #slot #read #key

ev_slotmap

一个无锁、最终一致的并发槽映射

6 个版本

0.2.1 2020 年 8 月 31 日
0.2.0 2020 年 7 月 27 日
0.1.3 2020 年 7 月 25 日
0.1.0 2020 年 6 月 25 日

#811并发

MIT/Apache

38KB
712

ev_slotmap

Crates.io Documentation

一个无锁的并发槽映射。

这个库的大部分是 Jon Gjengset 的 evmap 的复制品,但做了一些显著的简化

  • 值包映射被替换为 单向槽映射
  • 没有批处理编辑(因为槽映射键需要在插入时返回)
  • 没有关联元数据

evmap 的核心同步组件仍然存在。出于简化的考虑,我们也直接使用了 evmap 中的 ShallowCopy,而不是复制粘贴。以下内容几乎直接来自 evmap。

此映射实现允许读取和写入完全并行执行,没有隐式的同步开销。读取永远不会在其关键路径上获取锁,假设有一个单独的写入者(可以使用 Mutex 实现多写入者),这显著提高了争用下的性能。

与 evmap 不同,evmap 在显式 refresh 调用后提供最终一致性,读取和写入之间的同步发生在写入方法返回之前。对于读取密集型的工作负载,此模块使用的方案特别有用。写入者可以在每次写入后刷新,这提供了最新的读取,而读者保持快速,因为它们不需要获取锁。

性能

基准测试即将推出

依赖关系

~335KB