procspawn 1.0.2

thread::spawn just with processes
Documentation

procspawn

Crates.io Documentation

This crate provides the ability to spawn processes with a function similar to thread::spawn. Instead of closures it passes serde serializable objects. The return value from the spawned closure also must be serializable and can then be retrieved from the returned join handle.

If the spawned function causes a panic it will also be serialized across the process boundaries.

Example

Step 1: invoke procspawn::init as the first operation in main. A spawned process starts the executable again and re-enters main, so any code before this call runs again in every child process. Keep application setup and other side effects after it.

fn main() {
    procspawn::init();
    // Application setup starts here.
}

Step 2: now you can start spawning functions:

let data = vec![1, 2, 3, 4];
let handle = procspawn::spawn(data, |data| {
    println!("Received data {:?}", &data);
    data.into_iter().sum::<i64>()
});
let result = handle.join().unwrap();

License and Links