
Tokio & Async I/O
Tokio runtime, async tasks, select!, join!, timeout, tokio::spawn, async файловий/мережевий I/O
1Яка основна роль runtime Tokio в асинхронному застосунку на Rust?
Яка основна роль runtime Tokio в асинхронному застосунку на Rust?
Відповідь
Runtime Tokio надає executor, який виконує poll майбутніх (futures) до їх завершення. Він також керує багатопотоковим scheduler (за замовчуванням) для розподілу завдань між кількома потоками OS, а також reactor для асинхронних операцій I/O. Без runtime майбутні Rust нічого не роблять, оскільки вони за замовчуванням lazy.
2Як ініціалізувати runtime Tokio за допомогою макроса #[tokio::main]?
Як ініціалізувати runtime Tokio за допомогою макроса #[tokio::main]?
Відповідь
Макрос #[tokio::main] перетворює асинхронну функцію main() на синхронну точку входу, яка створює багатопотоковий runtime Tokio та виконує async-функцію. Цей макрос автоматично генерує необхідний boilerplate для створення runtime та блокування доти, доки головна future не завершиться.
3Яка різниця між #[tokio::main] та #[tokio::main(flavor = "current_thread")]?
Яка різниця між #[tokio::main] та #[tokio::main(flavor = "current_thread")]?
Відповідь
За замовчуванням #[tokio::main] створює багатопотоковий runtime, який розподіляє завдання між пулом worker threads. З flavor = "current_thread" runtime виконує всі завдання лише в головному потоці, що корисно для тестів, простих застосунків або коли потрібно уникнути спільного використання даних між потоками.
Що робить tokio::spawn() і який тип він повертає?
Чому майбутні (futures), що передаються в tokio::spawn(), повинні бути 'static?
+19 питань зі співбесід
Інші теми співбесід Rust
Основи Rust
Ownership & Borrowing
Structs & Enums
Обробка помилок
Колекції
Модулі та пакети
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Макроси
Serde та серіалізація
Unsafe Rust
Просунуті trait'и
Просунуті Lifetimes
Type System
Оптимізація продуктивності
Memory Management
Web Frameworks
Database Integration
Патерни проєктування Rust
Опануй Rust для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно