Rust

Concurrency Basics

Threads, thread::spawn, move closures, channels (mpsc), Send & Sync Traits, thread safety

20 Interview-Fragen·
Mid-Level
1

Welche Funktion sollte verwendet werden, um einen neuen Thread in Rust zu erstellen?

Antwort

Die Funktion thread::spawn aus dem Modul std::thread erstellt einen neuen Ausführungsthread. Sie nimmt eine Closure als Parameter und gibt ein JoinHandle zurück, mit dem über die Methode join() auf das Ende des Threads gewartet werden kann. Diese Funktion ist der Haupteinstiegspunkt für threadbasierte nebenläufige Programmierung in Rust.

2

Was gibt die Methode join() zurück, wenn sie auf einem JoinHandle aufgerufen wird?

Antwort

Die Methode join() gibt ein Result<T, E> zurück, wobei T der Rückgabetyp der Thread-Closure ist. Wenn der Thread normal endet, erhält man Ok(Wert). Wenn der Thread in Panik geraten ist, erhält man Err mit den Panic-Informationen. So lassen sich Thread-Ergebnisse sicher abrufen oder Fehler behandeln.

3

Warum sollte das Schlüsselwort move bei einer an thread::spawn übergebenen Closure verwendet werden?

Antwort

Das Schlüsselwort move zwingt die Closure, das Ownership der erfassten Variablen zu übernehmen, anstatt sie auszuleihen. Das ist bei thread::spawn unerlässlich, da der neue Thread länger leben kann als der Gültigkeitsbereich, in dem die Variablen definiert sind. Ohne move lehnt der Compiler ab, da er nicht garantieren kann, dass Referenzen während der gesamten Lebensdauer des Threads gültig sind.

4

Welche Rolle spielt der Send-Trait in Rust?

5

Welche Rolle spielt der Sync-Trait in Rust?

+17 Interview-Fragen

Meistere Rust für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten