dani-garcia/procspawn

like thread::spawn but for processes

3

stars

157

commits

Rust

primary language

Jan 20, 2025

updated

docs.rs/procspawn

README

procspawn

Build Status Crates.io Documentation rustc 1.65.0

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 functiom causes a panic it will also be serialized across the process boundaries.

Example

Step 1: invoke procspawn::init at a point early in your program (somewhere at the beginning of the main function). Whatever happens before that point also happens in your spawned functions.

procspawn::init();

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();

Contributors

mitsuhiko

114 commits

Manishearth

28 commits

jan-auer

5 commits

flub

2 commits

dani-garcia/procspawn

like thread::spawn but for processes

3

stars

157

commits

Rust

primary language

Jan 20, 2025

updated

docs.rs/procspawn

README

procspawn

Build Status Crates.io Documentation rustc 1.65.0

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 functiom causes a panic it will also be serialized across the process boundaries.

Example

Step 1: invoke procspawn::init at a point early in your program (somewhere at the beginning of the main function). Whatever happens before that point also happens in your spawned functions.

procspawn::init();

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();

Contributors

mitsuhiko

114 commits

Manishearth

28 commits

jan-auer

5 commits

flub

2 commits

Languages

Rust

98.5%

Makefile

1.5%