MST

星途 面试题库

面试题:Rust中互斥锁Mutex的基本使用

在Rust中,假设有一个全局变量`counter`,类型为`i32`,需要在多个线程中安全地对其进行递增操作。请编写代码实现这个功能,要求使用`Mutex`来保证线程安全的数据访问。
18.5万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

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

// 定义全局变量counter
static mut COUNTER: Option<Arc<Mutex<i32>>> = None;

fn main() {
    // 初始化全局变量counter
    unsafe {
        COUNTER = Some(Arc::new(Mutex::new(0)));
    }

    let mut handles = vec![];
    for _ in 0..10 {
        let counter = unsafe { COUNTER.as_ref().unwrap().clone() };
        let handle = thread::spawn(move || {
            let mut num = counter.lock().unwrap();
            *num += 1;
        });
        handles.push(handle);
    }

    for handle in handles {
        handle.join().unwrap();
    }

    let result = unsafe { COUNTER.as_ref().unwrap().lock().unwrap() };
    println!("Final counter value: {}", *result);
}