如何返回“MutexGuard”类型的内部值?

时间:2017-02-13 02:20:10

标签: multithreading locking rust

这是我的示例代码:

use std::sync::{Arc, Mutex};
use std::thread;

fn main() {
    println!("{:?}", test());
}

fn test() -> Vec<(u32, u32)> {
    let lock = Arc::new(Mutex::new(Vec::new()));
    let threads = Vec::new();

    for _ in 0..8 {
        let l = lock.clone();
        threads.push(thread::spawn(move || {
           let mut _lock = l.lock().unwrap();
           _lock.push((12, 28));
        }));
    }

    for t in threads { t.join(); }

    return lock.lock().unwrap();
}

错误类型不匹配:预期'Vec'找到'MutextGuard',我已经测试过没有'lock()'。

是否有解决方案或更好的解决此类问题的方法?

0 个答案:

没有答案