Rust

Tokio & Async I/O

Tokio runtime, async tasks, select!, join!, timeout, tokio::spawn, async I/O plików/sieci

22 pytań z rozmów·
Senior
1

Jaka jest główna rola runtime'u Tokio w asynchronicznej aplikacji Rust?

Odpowiedź

Runtime Tokio dostarcza executor, który wykonuje poll na futures aż do ich zakończenia. Zarządza także scheduler'em wielowątkowym (domyślnie), aby rozdzielać zadania pomiędzy wiele wątków OS, oraz reactor'em do asynchronicznych operacji I/O. Bez runtime'u futures w Rust nic nie robią, ponieważ domyślnie są lazy.

2

Jak zainicjować runtime Tokio za pomocą makra #[tokio::main]?

Odpowiedź

Makro #[tokio::main] przekształca asynchroniczną funkcję main() w synchroniczny punkt wejścia, który tworzy wielowątkowy runtime Tokio i wykonuje funkcję async. Makro to automatycznie generuje boilerplate niezbędny do utworzenia runtime'u i blokowania aż do zakończenia głównego future.

3

Jaka jest różnica między #[tokio::main] a #[tokio::main(flavor = "current_thread")]?

Odpowiedź

Domyślnie #[tokio::main] tworzy wielowątkowy runtime, który rozdziela zadania pomiędzy pulę worker threads. Z flavor = "current_thread" runtime wykonuje wszystkie zadania wyłącznie na głównym wątku, co jest przydatne w testach, prostych aplikacjach lub gdy należy unikać współdzielenia danych między wątkami.

4

Co robi tokio::spawn() i jaki typ zwraca?

5

Dlaczego futures przekazywane do tokio::spawn() muszą być 'static?

+19 pytań z rozmów

Opanuj Rust na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo