#并行 #性能 #连接 #线程

dynqueue

动态扩展的 Rayon 并行迭代器

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)

MIT 许可证

16KB
358

Rust Coverage Status

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