Tråde

Tråde (eng: threads) i Rust virker på samme måde som i andre sprog:

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

fn main() {
    thread::spawn(|| {
        for i in 1..10 {
            println!("Tæller i tråden: {i}!");
            thread::sleep(Duration::from_millis(5));
        }
    });

    for i in 1..5 {
        println!("Hovedtråden: {i}");
        thread::sleep(Duration::from_millis(5));
    }
}
  • Tråde er alle dæmontråde (eng: daemon threads), hvilket vil sige at hovedtråden ikke venter på dem.
  • Hver tråd kan gå i panik uafhængigt af andre tråde.
    • En panik kan have en nyttelast som kan udpakkes med downcast_ref.

Nøglepunkter:

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

  • Brug let handle = thread::spawn(...) og senere handle.join() for at vente på at tråden afsluttes.

  • Skab en panik i tråden, bemærk hvordan dette ikke påvirker main.

  • Bruge Result-returværdien fra handle.join() til at få adgang til panikkens nyttelast. Dette er et godt tidspunkt til at snakke om Any.