2个不稳定版本

0.5.0 2021年7月12日
0.4.2 2021年9月5日

#1792 in 数据结构

Download history 337/week @ 2024-03-14 448/week @ 2024-03-21 548/week @ 2024-03-28 561/week @ 2024-04-04 602/week @ 2024-04-11 687/week @ 2024-04-18 640/week @ 2024-04-25 469/week @ 2024-05-02 271/week @ 2024-05-09 350/week @ 2024-05-16 383/week @ 2024-05-23 643/week @ 2024-05-30 759/week @ 2024-06-06 965/week @ 2024-06-13 1067/week @ 2024-06-20 346/week @ 2024-06-27

3,319 每月下载量

MIT/Apache

155KB
3K SLoC

moka-cht

GitHub Actions crates.io release docs dependency status license

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-MITLICENSE-APACHE

致谢

moka-cht是基于cht v0.4.1的分支。我们创建了这个分支,以通过非默认的Cargo功能更好地集成Moka缓存

cht是由Gregory Meyer编写的,其v0.4.1和更早版本在MIT许可下发布。

依赖关系

~275KB