use std::thread;
fn main() {
struct Point<T> {
pub x: T,
}
let mut p = Point { x: 32 };
let mut vals = Vec::new();
for _ in 0..2 {
let h = thread::spawn(move || {
p.x = 5;
println!("{}", p.x);
});
vals.push(h);
}
for v in vals {
v.join().unwrap();
}
println!("{}", p.x); // 32
}
输出结果是两个 5 和最后的 32, 也就是说线程里修改对主线程无效
playground url: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=bf8936b4cc64c1f3124e926e81d9b4d6
DDDD -_-
我这里的变量 p 为啥能在多个线程间修改和使用呢? 懂的兄弟带带我, 谢谢.
同时求一个好的 rust 社区 /论坛 /讨论区