Rust

Tokio & Async I/O

Tokio runtime, async tasks, select!, join!, timeout, tokio::spawn, async файловий/мережевий I/O

22 питань зі співбесід·
Senior
1

Яка основна роль runtime Tokio в асинхронному застосунку на Rust?

Відповідь

Runtime Tokio надає executor, який виконує poll майбутніх (futures) до їх завершення. Він також керує багатопотоковим scheduler (за замовчуванням) для розподілу завдань між кількома потоками OS, а також reactor для асинхронних операцій I/O. Без runtime майбутні Rust нічого не роблять, оскільки вони за замовчуванням lazy.

2

Як ініціалізувати runtime Tokio за допомогою макроса #[tokio::main]?

Відповідь

Макрос #[tokio::main] перетворює асинхронну функцію main() на синхронну точку входу, яка створює багатопотоковий runtime Tokio та виконує async-функцію. Цей макрос автоматично генерує необхідний boilerplate для створення runtime та блокування доти, доки головна future не завершиться.

3

Яка різниця між #[tokio::main] та #[tokio::main(flavor = "current_thread")]?

Відповідь

За замовчуванням #[tokio::main] створює багатопотоковий runtime, який розподіляє завдання між пулом worker threads. З flavor = "current_thread" runtime виконує всі завдання лише в головному потоці, що корисно для тестів, простих застосунків або коли потрібно уникнути спільного використання даних між потоками.

4

Що робить tokio::spawn() і який тип він повертає?

5

Чому майбутні (futures), що передаються в tokio::spawn(), повинні бути 'static?

+19 питань зі співбесід

Опануй Rust для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно