[记]Rust在多线程下修改共享变量的值
1.
use std::time::Duration; use std::sync::{Arc, Mutex}; use std::thread; fn main() { let okz = "2333".to_string(); let apple = Arc::new(Mutex::new(okz)); for _ in 0..10 { let apple = Arc::clone(&apple); thread::spawn(move || { let mut aapp = apple.lock().unwrap(); aapp.push_str("-1-"); println!("{:?}", aapp); }); } let rlt = Arc::clone(&apple); println!("{:?}",rlt.lock().unwrap()); thread::sleep(Duration::from_secs(1)); }
输出打印:
"2333-1-" "2333-1--1-" "2333-1--1-" "2333-1--1--1-" "2333-1--1--1--1-" "2333-1--1--1--1--1-" "2333-1--1--1--1--1--1-" "2333-1--1--1--1--1--1--1-" "2333-1--1--1--1--1--1--1--1-" "2333-1--1--1--1--1--1--1--1--1-" "2333-1--1--1--1--1--1--1--1--1--1-"
-------------====================分割线====================-------------