#lazy-evaluation #reference #atomic #同步原语

lazy_ref

实现一个用于懒加载初始化不可变引用的非阻塞同步原语

3 个版本 (破坏性)

0.4.0 2024 年 5 月 9 日
0.3.0 2024 年 5 月 9 日
0.2.0 2024 年 5 月 8 日
0.1.0 2024 年 5 月 8 日

#974 in 并发

每月 49 次下载

MIT 许可证

12KB
106

lazy_ref

实现一个用于懒加载初始化不可变引用的非阻塞同步原语。

Crates.io Documentation MIT licensed Build Status

用法

从不同的线程写入 LazyRef

use rayon::prelude::*;
use lazy_ref::LazyRef;

let lazy_ref = LazyRef::new();
let thread_ids: Vec<usize> = vec![1, 2, 3];

thread_ids.par_iter()
    .for_each(
        |id| {
           let r = lazy_ref.get_or_init(|| id);
           assert!(thread_ids.contains(r));
       }
    );
let x = lazy_ref.get().unwrap();
assert!(thread_ids.contains(x));

依赖项

~115KB