7 个版本
| 0.3.0 | 2020 年 10 月 12 日 |
|---|---|
| 0.2.1 | 2020 年 7 月 20 日 |
| 0.1.3 | 2020 年 6 月 22 日 |
| 0.1.2 | 2020 年 5 月 25 日 |
#798 在 并发 中
每月 50 次下载
在 4 个 crates 中使用 (通过 shredder)
16KB
358 行
DynQueue - 动态扩展的 Rayon 并行迭代器
使用 into_par_iter 可以迭代 (DynQueueHandle, T) 元素,其中 DynQueueHandle<T> 可以在当前迭代的 DynQueue<T> 中插入新的 T。
Vec<T>、VecDeque<T> 和 crossbeam_queue::SegQueue<T> (使用 feature = "") 可以通过 .into_dyn_queue() 转换为 DynQueue<T>。
use rayon::iter::IntoParallelIterator as _;
use rayon::iter::ParallelIterator as _;
use dynqueue::IntoDynQueue as _;
fn main() {
let mut result = vec![1, 2, 3]
.into_dyn_queue()
.into_par_iter()
.map(|(handle, value)| { if value == 2 { handle.enqueue(4) }; value })
.collect::<Vec<_>>();
result.sort();
assert_eq!(result, vec![1, 2, 3, 4]);
}
特性
crossbeam-queue: 使用crossbeam::queue::SegQueue作为内部集合。
变更日志
0.2.0
- 引入
IntoDynQueue - 处理无锁集合
0.1.0
- 初始版本
依赖
~1.5MB
~26K SLoC