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