Sujets Rust importants
Rust Threads: spawn and join
Run code in parallel with thread::spawn and collect each result with join.
Ce que vous allez apprendre
- thread::spawn
- move closures
- join and return values
Three workers
- 1
spawn x3threads start - 2
sumeach works alone - 3
join()wait for each - 4
resultsprinted in order
Work that runs at the same time
A thread runs a piece of code at the same time as the rest of the program. thread::spawn starts one and returns a handle that you can use to wait for it.
move gives each thread its own copy of id. The threads may finish in any order, but join waits for each handle in the order they were created, so the output is always the same. join returns the value the closure produced.
Points clés
- spawn starts a thread and returns a handle.
- move gives the thread its own data.
- join waits and returns the thread's value.
Exemple Rust exécutable
main.rs
use std::thread;
fn main() {
let mut handles = Vec::new();
for id in 1..=3u64 {
let handle = thread::spawn(move || {
let total: u64 = (1..=id * 1000).sum();
(id, total)
});
handles.push(handle);
}
for handle in handles {
let (id, total) = handle.join().unwrap();
println!("worker {id} summed to {total}");
}
}
worker 1 summed to 500500
worker 2 summed to 2001000
worker 3 summed to 4501500S'entraîner
Ouvrez l'exemple dans le compilateur en ligne, modifiez une valeur ou ajoutez une ligne, et devinez la sortie avant de l'exécuter. Cassez ensuite le code exprès et lisez le message du compilateur.
Leçon terminée ?
Marquez-la comme apprise pour suivre votre progression.
Votre progression est enregistrée dans ce navigateur Connectez-vous pour la garder sur tous vos appareils.
S'entraîner avec un défi
Utilisez le contenu de cette leçon pour résoudre un vrai problème. Chaque défi s'exécute dans le navigateur, avec des tests instantanés et une revue par l'IA.
Tous les défis