
Concurrency Basics
Threads, thread::spawn, move closures, channels (mpsc), Send & Sync Traits, thread safety
1Welche Funktion sollte verwendet werden, um einen neuen Thread in Rust zu erstellen?
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.
2Was gibt die Methode join() zurück, wenn sie auf einem JoinHandle aufgerufen wird?
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.
3Warum sollte das Schlüsselwort move bei einer an thread::spawn übergebenen Closure verwendet werden?
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.
Welche Rolle spielt der Send-Trait in Rust?
Welche Rolle spielt der Sync-Trait in Rust?
+17 Interview-Fragen
Weitere Rust-Interviewthemen
Rust-Grundlagen
Ownership & Borrowing
Structs & Enums
Fehlerbehandlung
Collections
Module & Packages
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Makros
Serde & Serialisierung
Unsafe Rust
Fortgeschrittene Traits
Fortgeschrittene Lifetimes
Type System
Tokio & Async I/O
Performance-Optimierung
Memory Management
Web Frameworks
Database Integration
Rust Design Patterns
Meistere Rust für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten