MST

星途 面试题库

面试题:Rust中互斥多线程并发控制基础

在Rust中,如何使用`Mutex`实现简单的多线程并发控制?请给出一个示例代码,创建两个线程,一个线程对共享变量进行加操作,另一个线程进行减操作,并且确保数据的一致性。
32.6万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::sync::{Arc, Mutex};
use std::thread;

fn main() {
    let shared_data = Arc::new(Mutex::new(0));

    let data1 = Arc::clone(&shared_data);
    let handle1 = thread::spawn(move || {
        let mut data = data1.lock().unwrap();
        for _ in 0..1000 {
            *data += 1;
        }
    });

    let data2 = Arc::clone(&shared_data);
    let handle2 = thread::spawn(move || {
        let mut data = data2.lock().unwrap();
        for _ in 0..1000 {
            *data -= 1;
        }
    });

    handle1.join().unwrap();
    handle2.join().unwrap();

    let final_data = shared_data.lock().unwrap();
    println!("Final value: {}", *final_data);
}