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 社区 /论坛 /讨论区
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.