Tokio
Tokio provides:
- Un tiempo de ejecución multihilo para ejecutar código asíncrono.
- Una versión asíncrona de la biblioteca estándar.
- Un amplio ecosistema de bibliotecas.
use tokio::time; async fn count_to(count: i32) { for i in 1..=count { println!("Recuento en la tarea: {i}"); time::sleep(time::Duration::from_millis(5)).await; } } #[tokio::main] async fn main() { tokio::spawn(count_to(10)); for i in 1..5 { println!("Tarea principal: {i}"); time::sleep(time::Duration::from_millis(5)).await; } }
-
Con la macro
tokio::main
, podemos hacer quemain
sea asíncrono. -
La función
spawn
crea una "tarea" simultánea. -
Nota:
spawn
utiliza unFuture
, no se llama a.await
encount_to
.
Más información:
-
¿Por qué
count_to
no suele llegar a 10? Se trata de un ejemplo de cancelación asíncrona.tokio::spawn
devuelve un controlador que puede esperarse hasta que termine. -
Prueba
count_to(10).await
en lugar de usar spawn. -
Intenta esperar a la correción de la tarea de
tokio::spawn
.