`

rust mutex

    博客分类:
  • rust
 
阅读更多
use std::sync::{Arc,Mutex};
use std::thread::spawn;

#[test]
pub fn mutex(){
    let m = Mutex::new(5);
    {
        let mut num = m.lock().unwrap();
        *num = 6;
    }
    println!("m:{:?}",m);

    let counter = Arc::new(Mutex::new(0));
    let mut handles = vec![];

    for i in 0..10 {
        let counter = Arc::clone(&counter);
        let handle = spawn(move || {
            let mut num = counter.lock().unwrap();
            *num = *num + 1;
        });
        handles.push(handle);
    }

    for handle in handles {
        handle.join().unwrap();
    }
    println!("counter:{:?}",counter);
}


m:Mutex { data: 6, poisoned: false, .. }
counter:Mutex { data: 10, poisoned: false, .. }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics