Hilos

Los hilos de Rust funcionan de forma similar a los de otros lenguajes:

use std::thread;
use std::time::Duration;

fn main() {
    thread::spawn(|| {
        for i in 1..10 {
            println!("Count in thread: {i}!");
            thread::sleep(Duration::from_millis(5));
        }
    });

    for i in 1..5 {
        println!("Main thread: {i}");
        thread::sleep(Duration::from_millis(5));
    }
}
  • Los hilos son todos hilos daemon, y el hilo principal no espera por ellos.
  • Los pánicos de los hilos son independientes entre sí.
    • Los pánicos pueden transportar una carga útil, que se puede desempaquetar con downcast_ref.

Puntos clave:

  • Notice that the thread is stopped before it reaches 10 — the main thread is not waiting.

  • Utiliza let handle = thread::spawn(...) y, después, handle.join() para esperar a que el hilo termine.

  • Activa un pánico en el hilo y observa cómo esto no afecta a main.

  • Usa el valor devuelto Result de handle.join.() para acceder a la carga útil del pánico. Este es un buen momento para hablar sobre Any.