从Rust中的不同线程同时修改和使用变量

时间:2019-02-08 14:35:52

标签: multithreading rust thread-safety

我正在尝试使用线程在Rust中同时使用和更改变量的值。

有些BoxMutex之类的东西可以共享对象,但是这些似乎都无法解决我的问题。我想访问一个变量并更改一个值,而另一方面,将该变量用于其他内容,例如下面的代码。

use std::thread;

fn main() {
    let mut val = 0;
    thread::spawn(|| {
        let mut i = 0;
        loop {
            val = i;
            i += 1;
        }
    });

    loop {
        println!("val: {}", val);
    }
}

在C语言中,这很容易实现,并且可以轻松打印出i,但是由于Rust中的所有权管理技术,上述线程获得了所有权并且无法编译代码。 / p>

有什么办法可以解决这个问题?

0 个答案:

没有答案