[−][src]Crate procspawn
This crate provides the ability to spawn processes with a function similar
to thread::spawn
.
Unlike thread::spawn
data cannot be passed in closures but must be
explicitly passed as single argument which must be serde
serializable. The return value from the spawned closure also must be
serializable and can then be unwrapped from the returned join handle.
procspawn::init(); 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();
Because procspawn
will invoke a subprocess and there is currently no
reliable way to intercept main
in Rust it's necessary for you to call
procspawn::init
at an early time in the program. The
place where this will be called is the entrypoint for the subprocesses
spawned.
spawn
can pass arbitrary serializable data, including
IPC senders and receivers from the ipc-channel
crate, down to the new process.
Differences to Mitosis
This crate is a fork of the mitosis
crate with various differences in
how they operate. The most obvious one is that procspawn
is very
opinionated about error handling and will automatically capture and
send backtraces across the process boundaries. Additionally procspawn
provides a process pool.
Feature Flags
The following feature flags exist:
backtrace
: this feature is enabled by default. When in use then backtraces are captured with thebacktrace-rs
crate and serialized across process boundaries.test-support
: when this feature is enabled procspawn can be used with rusttest. Seeenable_test_support!
for more information.
Platform Support
Currently this crate only supports macOS and Linux because ipc-channel itself does not support Windows yet.
Macros
enable_test_support | Supports the use of procspawn in tests. |
Structs
Builder | Process factory, which can be used in order to configure the properties of a process being created. |
JoinHandle | An owned permission to join on a process (block on its termination). |
Location | Location of a panic. |
PanicInfo | Represents a panic caugh across processes. |
Pool | A process pool. |
PoolBuilder | Utility to configure a pool. |
ProcConfig | Can be used to configure the process. |
SpawnError | Encapsulates errors of the procspawn crate. |
Functions
init | Initializes procspawn. |
spawn | Spawn a new process to run a function with some payload. |