Rust

Tokio & Async I/O

Tokio runtime, async tasks, select!, join!, timeout, tokio::spawn, I/O async de archivo/red

22 preguntas de entrevista·
Senior
1

¿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]?

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")]?

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.

4

¿Qué hace tokio::spawn() y qué tipo retorna?

5

¿Por qué los futures pasados a tokio::spawn() deben ser 'static?

+19 preguntas de entrevista

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