typestar

Lanzar tareas en Rust

tokio::spawn entrega un futuro al runtime y devuelve un JoinHandle.

use tokio::time::{sleep, Duration};

async fn work(id: u32) -> u32 {
    sleep(Duration::from_millis(10 * id as u64)).await;
    id * id
}

#[tokio::main]
async fn main() {
    let mut handles = Vec::new();
    for id in 1..=4 {
        handles.push(tokio::spawn(work(id)));
    }

    for handle in handles {
        println!("{}", handle.await.unwrap());
    }
}

Cómo funciona

  1. Las tareas son baratas: miles por hilo es lo normal.
  2. El handle se resuelve a la salida de la tarea.
  3. Un futuro lanzado debe ser 'static: mueve lo que necesita.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
18
Caracteres a escribir
320
Tokens
107
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 58 segundos.

Escribe este fragmento

Paso 2 de 6 en Async con tokio; paso 10 de 15 en Concurrencia y async.

← Anterior Siguiente →