Threads com Escopo
Threads normais nĂŁo podem emprestar de seu ambiente:
use std::thread; fn foo() { let s = String::from("OlĂĄ"); thread::spawn(|| { println!("Comprimento: {}", s.len()); }); } fn main() { foo(); }
No entanto, vocĂȘ pode usar uma thread com escopo para isso:
use std::thread; fn main() { let s = String::from("OlĂĄ"); thread::scope(|scope| { scope.spawn(|| { println!("Comprimento: {}", s.len()); }); }); }
This slide should take about 13 minutes.
- A razão para isso é que, quando a função
thread::scope
for concluĂda, todas as threads serĂŁo unidas, para que possam retornar dados emprestados. - As regras normais de emprĂ©stimo do Rust se aplicam: vocĂȘ pode emprestar mutavelmente por uma thread, ou imutavelmente por qualquer nĂșmero de threads.