2个不稳定版本
0.5.0 | 2021年7月12日 |
---|---|
0.4.2 | 2021年9月5日 |
#1792 in 数据结构
3,319 每月下载量
155KB
3K SLoC
moka-cht
moka-cht提供了一种无锁的哈希表,支持完全并发的查找、插入、修改和删除。表还可以并发调整大小,以允许插入更多元素。moka-cht还提供了一个使用相同无锁算法的段哈希表,以实现更高的并发写入性能。
使用方法
将其添加到您的 Cargo.toml
moka-cht = "0.5"
然后在您的代码中
use moka_cht::HashMap;
use std::{sync::Arc, thread};
let map = Arc::new(HashMap::new());
let threads: Vec<_> = (0..16)
.map(|i| {
let map = map.clone();
thread::spawn(move || {
const NUM_INSERTIONS: usize = 64;
for j in (i * NUM_INSERTIONS)..((i + 1) * NUM_INSERTIONS) {
map.insert_and(j, j, |_prev| unreachable!());
}
})
})
.collect();
let _: Vec<_> = threads.into_iter().map(|t| t.join()).collect();
许可协议
moka-cht可以在以下任一许可下分发:
- MIT许可
- Apache许可(版本2.0)
由您选择。
有关详细信息,请参阅LICENSE-MIT 和 LICENSE-APACHE。
致谢
moka-cht是基于cht v0.4.1的分支。我们创建了这个分支,以通过非默认的Cargo功能更好地集成Moka缓存。
cht是由Gregory Meyer编写的,其v0.4.1和更早版本在MIT许可下发布。
依赖关系
~275KB