
Tokio & Async I/O
Tokio runtime, async tasks, select!, join!, timeout, tokio::spawn, async Datei-/Netzwerk-I/O
1Welche Hauptrolle spielt das Tokio-runtime in einer asynchronen Rust-Anwendung?
Welche Hauptrolle spielt das Tokio-runtime in einer asynchronen Rust-Anwendung?
Antwort
Das Tokio-runtime stellt einen executor bereit, der futures bis zur Fertigstellung pollt. Es verwaltet außerdem einen Multithread-scheduler (standardmäßig), um Aufgaben auf mehrere OS-threads zu verteilen, sowie einen reactor für asynchrone I/O-Operationen. Ohne runtime tun Rust-futures nichts, da sie standardmäßig lazy sind.
2Wie initialisiert man das Tokio-runtime mit dem #[tokio::main]-Makro?
Wie initialisiert man das Tokio-runtime mit dem #[tokio::main]-Makro?
Antwort
Das #[tokio::main]-Makro wandelt eine async-main()-Funktion in einen synchronen Einstiegspunkt um, der ein Multithread-Tokio-runtime erstellt und die async-Funktion ausführt. Dieses Makro generiert automatisch den nötigen Boilerplate-Code, um das runtime zu erstellen und zu blockieren, bis die Haupt-future abgeschlossen ist.
3Was ist der Unterschied zwischen #[tokio::main] und #[tokio::main(flavor = "current_thread")]?
Was ist der Unterschied zwischen #[tokio::main] und #[tokio::main(flavor = "current_thread")]?
Antwort
Standardmäßig erstellt #[tokio::main] ein Multithread-runtime, das Aufgaben auf einen Pool von worker threads verteilt. Mit flavor = "current_thread" führt das runtime alle Aufgaben nur auf dem Haupt-thread aus, was für Tests, einfache Anwendungen oder wenn die gemeinsame Nutzung von Daten zwischen threads vermieden werden soll, nützlich ist.
Was macht tokio::spawn() und welchen Typ gibt es zurück?
Warum müssen futures, die an tokio::spawn() übergeben werden, 'static sein?
+19 Interview-Fragen
Weitere Rust-Interviewthemen
Rust-Grundlagen
Ownership & Borrowing
Structs & Enums
Fehlerbehandlung
Collections
Module & Packages
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Makros
Serde & Serialisierung
Unsafe Rust
Fortgeschrittene Traits
Fortgeschrittene Lifetimes
Type System
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