Das Erzeugen von nativem Threads in Rust

RustRustBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.rs verwenden und es mit rustc main.rs &&./main kompilieren und ausführen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/ControlStructuresGroup(["Control Structures"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/BasicConceptsGroup -.-> rust/mutable_variables("Mutable Variables") rust/BasicConceptsGroup -.-> rust/constants_usage("Constants Usage") rust/DataTypesGroup -.-> rust/integer_types("Integer Types") rust/ControlStructuresGroup -.-> rust/for_loop("for Loop") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax") subgraph Lab Skills rust/variable_declarations -.-> lab-99266{{"Das Erzeugen von nativem Threads in Rust"}} rust/mutable_variables -.-> lab-99266{{"Das Erzeugen von nativem Threads in Rust"}} rust/constants_usage -.-> lab-99266{{"Das Erzeugen von nativem Threads in Rust"}} rust/integer_types -.-> lab-99266{{"Das Erzeugen von nativem Threads in Rust"}} rust/for_loop -.-> lab-99266{{"Das Erzeugen von nativem Threads in Rust"}} rust/function_syntax -.-> lab-99266{{"Das Erzeugen von nativem Threads in Rust"}} rust/expressions_statements -.-> lab-99266{{"Das Erzeugen von nativem Threads in Rust"}} rust/method_syntax -.-> lab-99266{{"Das Erzeugen von nativem Threads in Rust"}} end

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.