Einführung
In diesem Lab haben wir einen Codeausschnitt in Rust, der zeigt, wie man native Betriebssystem-Threads mit der spawn-Funktion und einer verschiebenden Closure erzeugt. Der Code erstellt einen Vektor, um die erzeugten Threads zu speichern, iteriert über einen Zahlenbereich, um mehrere Threads zu erzeugen und gibt eine Nachricht aus, die jede Threadnummer identifiziert. Schließlich wartet der Hauptthread, bis jeder erzeugte Thread mit der join-Funktion abgeschlossen ist.
Hinweis: Wenn das Lab keinen Dateinamen angibt, können Sie einen beliebigen Dateinamen verwenden. Beispielsweise können Sie
main.rsverwenden und es mitrustc main.rs &&./mainkompilieren und ausführen.
Threads
Rust bietet einen Mechanismus zum Erzeugen von nativem Betriebssystem-Threads über die spawn-Funktion. Der Argument dieser Funktion ist eine verschiebende Closure.
use std::thread;
const NTHREADS: u32 = 10;
// Dies ist der `main`-Thread
fn main() {
// Erzeuge einen Vektor, um die erzeugten Kinder-Threads zu speichern.
let mut children = vec![];
for i in 0..NTHREADS {
// Starte einen weiteren Thread
children.push(thread::spawn(move || {
println!("dies ist Threadnummer {}", i);
}));
}
for child in children {
// Warte, bis der Thread abgeschlossen ist. Gibt ein Ergebnis zurück.
let _ = child.join();
}
}
Diese Threads werden vom Betriebssystem geplant.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Threads-Lab abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.