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
.
- En panik kan have en nyttelast som kan udpakkes med
Nøglepunkter:
-
Notice that the thread is stopped before it reaches 10 --- the main thread is not waiting.
-
Brug
let handle = thread::spawn(...)
og senerehandle.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 frahandle.join()
til at få adgang til panikkens nyttelast. Dette er et godt tidspunkt til at snakke omAny
.