#parallel-iterator #parallel #ordered #iterator #thread

ordered-parallel-iterator

Performs tasks in parallel returning completed tasks in order of appearance

3 unstable releases

0.2.0 May 9, 2024
0.1.1 Apr 18, 2020
0.1.0 Mar 9, 2019

#413 in Concurrency

Download history 2/week @ 2024-07-20 7/week @ 2024-07-27 1/week @ 2024-08-03 3/week @ 2024-08-24 4/week @ 2024-08-31 1/week @ 2024-09-14 14/week @ 2024-09-21 75/week @ 2024-09-28 1/week @ 2024-10-05

193 downloads per month
Used in 2 crates

Unlicense OR MIT

8KB
108 lines

ordered-parallel-iterator

This crate provides an iterator over task results which performs tasks in parallel returning completed tasks in order of source range iterator. It can be useful if you need to process some data in parallel but need to have results in the order of appearance (FIFO).

Dual-licensed under MIT or the UNLICENSE.

Installation

Add following dependency to your Cargo.toml:

[dependencies]
ordered-parallel-iterator = "0.2"

Usage

use ordered_parallel_iterator::OrderedParallelIterator;

fn run_me(x: usize) -> usize {
    x + 1
}

fn main() {
    for i in OrderedParallelIterator::new(|| 0..10, || run_me) {
        println!("Result from iterator: {}", i);
    }
}

In this example each run_me call will happen in own thread, but results will be returned sequentially as fast as first will be finished. Count of pending tasks running in parallel bind to count of CPU cores.


lib.rs:

Crate ordered-parallel-iterator provides an iterator over task results which performs tasks in parallel returning completed tasks in order of source range iterator. It can be useful if you need to process some data in parallel but need to have results in the order of appearance (FIFO).

Installation

Add following dependency to your Cargo.toml:

[dependencies]
ordered-parallel-iterator = "0.2"

Usage

use ordered_parallel_iterator::OrderedParallelIterator;

fn run_me(x: usize) -> usize {
x + 1
}

fn main() {
for i in OrderedParallelIterator::new(|| 0..10, || run_me) {
println!("Result from iterator: {}", i);
}
}

In this example each run_me call will happen in own thread, but results will be returned sequentially as fast as first will be finished. Count of pending tasks running in parallel bind to count of CPU cores.

Dependencies

~215KB