Rust

Tokio & Async I/O

Tokio runtime, async tasks, select!, join!, timeout, tokio::spawn, async file/network I/O

22 questions d'entretien·
Senior
1

Quel est le rôle principal du runtime Tokio dans une application Rust asynchrone ?

Réponse

Le runtime Tokio fournit un executor qui poll les futures jusqu'à leur complétion. Il gère également un scheduler multi-thread (par défaut) pour distribuer les tâches sur plusieurs threads OS, ainsi qu'un reactor pour les opérations I/O asynchrones. Sans runtime, les futures Rust ne font rien car elles sont lazy par défaut.

2

Comment initialiser le runtime Tokio avec la macro #[tokio::main] ?

Réponse

La macro #[tokio::main] transforme une fonction async main() en un point d'entrée synchrone qui crée un runtime Tokio multi-thread et exécute la fonction async. Cette macro génère automatiquement le boilerplate nécessaire pour créer le runtime et bloquer jusqu'à la complétion de la future principale.

3

Quelle est la différence entre #[tokio::main] et #[tokio::main(flavor = "current_thread")] ?

Réponse

Par défaut, #[tokio::main] crée un runtime multi-thread qui distribue les tâches sur un pool de worker threads. Avec flavor = "current_thread", le runtime exécute toutes les tâches sur le thread principal uniquement, ce qui est utile pour les tests, les applications simples ou quand le partage de données entre threads doit être évité.

4

Que fait tokio::spawn() et quel type retourne-t-il ?

5

Pourquoi les futures passées à tokio::spawn() doivent-elles être 'static ?

+19 questions d'entretien

Maîtrise Rust pour ton prochain entretien

Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.

Commencer gratuitement