Rust threads have the following features:
- Share memory
- Share resources, such as files or sockets
- Tend to be thread-safe
- Support inter-thread messaging
- Are platform-independent
For the preceding reasons, we suggest that Rust threads are better suited to most concurrency use cases than subprocesses. If you want to distribute computation, circumvent a blocking operation, or otherwise utilize concurrency for your application—use threads.
To show the thread pattern, we can re-implement the preceding examples. Here are three children threads:
use std::{thread,time};
use std::process;
extern crate thread_id;
fn main() {
for _ in 0..3 {
thread::spawn(|| {
let t = time::Duration::from_millis(1000);
loop {
println!("child thread #{}:{}", process::id(),
thread_id::get());
thread::sleep(t);
...