Threads
Threads em Rust funcionam de maneira semelhante Ă s threads em outras linguagens:
use std::thread; use std::time::Duration; fn main() { thread::spawn(|| { for i in 1..10 { println!("Contagem na _thread_: {i}!"); thread::sleep(Duration::from_millis(5)); } }); for i in 1..5 { println!("_Thread_ principal: {i}"); thread::sleep(Duration::from_millis(5)); } }
- Threads sĂŁo todas âdaemon threadsâ, a thread principal nĂŁo espera por elas.
- âPanicsâ em threads sĂŁo independentes uns dos outros.
- âPanicsâ podem carregar um payload (carga Ăștil), que pode ser descompactado com
downcast_ref
.
- âPanicsâ podem carregar um payload (carga Ăștil), que pode ser descompactado com
Pontos chave:
-
Observe que a thread Ă© interrompida antes de atingir 10 â a thread principal nĂŁo estĂĄ esperando.
-
Use
let handle = thread::spawn(...)
e depoishandle.join()
para esperar que a thread termine. -
Dispare um panic na thread, observe como isso nĂŁo afeta
main
. -
Use o valor de retorno
Result
dehandle.join()
para obter acesso ao payload do panic. Este Ă© um bom momento para falar sobreAny
.