Tokio
Tokio fornece:
- Um runtime multi-threaded para executar cĂłdigo assĂncrono.
- Uma versĂŁo assĂncrona da biblioteca padrĂŁo.
- Um grande ecossistema de bibliotecas.
use tokio::time; async fn count_to(count: i32) { for i in 1..=count { println!("Contador na tarefa: {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!("Tarefa principal: {i}"); time::sleep(time::Duration::from_millis(5)).await; } }
-
Com a macro
tokio::main
agora podemos tornarmain
async. -
A função
spawn
cria uma nova "tarefa" concorrente. -
Nota:
spawn
recebe umaFuture
, vocĂȘ nĂŁo chama.await
emcount_to
.
Exploração adicional:
-
Por que
count_to
(geralmente) nĂŁo chega a 10? Este Ă© um exemplo de cancelamento async.tokio::spawn
retorna um handle que pode ser aguardado para esperar que ele termine. -
Tente
count_to(10).await
em vez de spawn. -
Tente aguardar a tarefa retornada de
tokio::spawn
.