Rust

Tokio & Async I/O

Tokio runtime, async tasks, select!, join!, timeout, tokio::spawn, async Datei-/Netzwerk-I/O

22 Interview-Fragen·
Senior
1

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.

2

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.

3

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.

4

Was macht tokio::spawn() und welchen Typ gibt es zurück?

5

Warum müssen futures, die an tokio::spawn() übergeben werden, 'static sein?

+19 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