戳人痛处

导航

[记]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-"

 

posted on 2022-08-17 17:58  戳人痛处  阅读(187)  评论(0编辑  收藏  举报