
Tokio & Async I/O
Tokio runtime, async tasks, select!, join!, timeout, tokio::spawn, I/O async de archivo/red
1¿Cuál es el rol principal del runtime de Tokio en una aplicación Rust asíncrona?
¿Cuál es el rol principal del runtime de Tokio en una aplicación Rust asíncrona?
Respuesta
El runtime de Tokio proporciona un executor que hace poll de los futures hasta su finalización. También gestiona un scheduler multi-thread (por defecto) para distribuir las tareas entre varios threads del OS, además de un reactor para las operaciones I/O asíncronas. Sin un runtime, los futures de Rust no hacen nada, ya que son lazy por defecto.
2¿Cómo inicializar el runtime de Tokio con la macro #[tokio::main]?
¿Cómo inicializar el runtime de Tokio con la macro #[tokio::main]?
Respuesta
La macro #[tokio::main] transforma una función async main() en un punto de entrada síncrono que crea un runtime Tokio multi-thread y ejecuta la función async. Esta macro genera automáticamente el boilerplate necesario para crear el runtime y bloquear hasta que la future principal finalice.
3¿Cuál es la diferencia entre #[tokio::main] y #[tokio::main(flavor = "current_thread")]?
¿Cuál es la diferencia entre #[tokio::main] y #[tokio::main(flavor = "current_thread")]?
Respuesta
Por defecto, #[tokio::main] crea un runtime multi-thread que distribuye las tareas entre un pool de worker threads. Con flavor = "current_thread", el runtime ejecuta todas las tareas únicamente en el thread principal, lo que resulta útil para tests, aplicaciones simples o cuando se debe evitar compartir datos entre threads.
¿Qué hace tokio::spawn() y qué tipo retorna?
¿Por qué los futures pasados a tokio::spawn() deben ser 'static?
+19 preguntas de entrevista
Otros temas de entrevista Rust
Fundamentos de Rust
Ownership & Borrowing
Structs & Enums
Manejo de errores
Colecciones
Módulos y Paquetes
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macros
Serde y serialización
Unsafe Rust
Traits avanzados
Lifetimes Avanzados
Type System
Optimización de Rendimiento
Memory Management
Web Frameworks
Database Integration
Patrones de diseño en Rust
Domina Rust para tu próxima entrevista
Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.
Empieza gratis