8个版本 (4个重大变更)

0.5.0 2021年12月13日
0.4.1 2020年3月11日
0.3.0 2020年3月5日
0.2.0 2020年2月28日
0.1.2 2019年6月26日

#527并发

Download history • Rust 包仓库 78/week @ 2024-03-13 • Rust 包仓库 80/week @ 2024-03-20 • Rust 包仓库 80/week @ 2024-03-27 • Rust 包仓库 83/week @ 2024-04-03 • Rust 包仓库 79/week @ 2024-04-10 • Rust 包仓库 74/week @ 2024-04-17 • Rust 包仓库 61/week @ 2024-04-24 • Rust 包仓库 36/week @ 2024-05-01 • Rust 包仓库 76/week @ 2024-05-08 • Rust 包仓库 76/week @ 2024-05-15 • Rust 包仓库 80/week @ 2024-05-22 • Rust 包仓库 79/week @ 2024-05-29 • Rust 包仓库 86/week @ 2024-06-05 • Rust 包仓库 95/week @ 2024-06-12 • Rust 包仓库 72/week @ 2024-06-19 • Rust 包仓库 54/week @ 2024-06-26 • Rust 包仓库

每月321 次下载

AGPL-3.0-or-later

115KB
2K SLoC

cht

crates.io docs.rs Travis CI

cht 提供了一个无锁哈希表,支持完全并发的查找、插入、修改和删除。该表还可以并发地调整大小,以允许插入更多元素。cht 还提供了一种使用相同无锁算法的段式哈希表,以提高并发写性能。

用法

在你的 Cargo.toml

cht = "0.5"

然后在你的代码中

use 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| assert_eq!(prev, None));
            }
        })
    })
    .collect();

let _: Vec<_> = threads.into_iter().map(|t| t.join()).collect();

许可证

cht 采用 GNU Affero 通用公共许可证 v3.0 或更高版本授权。

依赖项

~255KB