16 个版本 (4 个重大更新)

0.4.2 2021 年 1 月 6 日
0.4.1 2021 年 1 月 5 日
0.3.2 2021 年 1 月 3 日
0.2.5 2021 年 1 月 3 日
0.0.5 2020 年 12 月 31 日

并发 中排名第 595

每月下载量 34 次
用于 faa_array_queue

MIT 许可证

43KB
660

peril

Latest version Documentation Lines of code MIT

Peril 是 Rust 的快速且安全的危险指针实现。Peril 使用 32 个危险记录的块来快速标记指针为受保护。这比其他向用户 API 公开线程 ID 的实现效率低,但它也免除了用户需要跟踪系统中所有活动线程的麻烦。

使用方法

将这些行添加到您的 Cargo.toml

[dependencies]
peril = "0.4"

然后在您的无锁更新循环中使用 HazardPointers

use peril::{HazardRegistry, HazardValue, HazardRecord, HazardPointer, Ordering};

let registry = HazardRegistry::default();
let hp = HazardPointer::new(HazardValue::boxed(0), &registry);
let mut record = HazardRecord::default();
loop {
    let scope = hp.protect(&mut record);
    let new = *(scope.as_ref().unwrap()) + 1;
    match scope.compare_exchange(HazardValue::boxed(new), Ordering::Relaxed, Ordering::Relaxed)
    {
        Ok(old) =>
        {
            assert!(old.as_ref().unwrap() == &0);
            break;
        }
        Err(_) => assert!(false),
    }
}

许可证

根据 MIT 许可证 许可

依赖项

~235KB