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 在 并发
38KB
712 行
ev_slotmap
一个无锁的并发槽映射。
这个库的大部分是 Jon Gjengset 的 evmap 的复制品,但做了一些显著的简化
- 值包映射被替换为 单向槽映射
- 没有批处理编辑(因为槽映射键需要在插入时返回)
- 没有关联元数据
evmap 的核心同步组件仍然存在。出于简化的考虑,我们也直接使用了 evmap 中的 ShallowCopy,而不是复制粘贴。以下内容几乎直接来自 evmap。
此映射实现允许读取和写入完全并行执行,没有隐式的同步开销。读取永远不会在其关键路径上获取锁,假设有一个单独的写入者(可以使用 Mutex
实现多写入者),这显著提高了争用下的性能。
与 evmap 不同,evmap 在显式 refresh
调用后提供最终一致性,读取和写入之间的同步发生在写入方法返回之前。对于读取密集型的工作负载,此模块使用的方案特别有用。写入者可以在每次写入后刷新,这提供了最新的读取,而读者保持快速,因为它们不需要获取锁。
性能
基准测试即将推出
依赖关系
~335KB