use std::thread;use std::time::Duration;fn main() { let p1 = Point {x:0, y:0}; // 加move转移p1所有权,不加时是借用 let h = thread::spawn(move ||{ for i : i32 in 0..10 { println!("{}", i); thread::sleep(Duration::from_millis(100)); } }); h.join();}
共享不可变,可变不共享
fn main() { let mut p_arc_mutex = Arc::new(Mutex::new(Point {x:0, y:0})); let p1 = Arc::clone(&P_arc_mutex); let h = thread::spawn(move ||{ let mut p = p1.lock().unwrap(); p.x += 1; }); h.join();}
fn main() { let mut p_arc_mutex = Arc::new(Mutex::new(Point {x:0, y:0})); for _ in 0..10 { let pp = Arc::clone(&p_arc_mutex); let h = thread::spawn(move || { let mut p = pp.lock().unwrap(); p.x += 1; }); h.join(); }}