MST

星途 面试题库

面试题:Rust中如何利用顺序一致性顺序解决简单并发数据竞争问题

假设你有一个Rust程序,包含两个线程,一个线程负责写入一个共享变量,另一个线程负责读取该共享变量。请使用Rust的原子类型和顺序一致性顺序来确保读取线程能正确获取到写入线程更新后的值,并编写完整代码实现。
29.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::sync::{Arc, atomic::{AtomicI32, Ordering}};
use std::thread;

fn main() {
    let shared_variable = Arc::new(AtomicI32::new(0));
    let shared_variable_clone = shared_variable.clone();

    let write_thread = thread::spawn(move || {
        shared_variable_clone.store(42, Ordering::SeqCst);
    });

    let read_thread = thread::spawn(move || {
        loop {
            let value = shared_variable.load(Ordering::SeqCst);
            if value != 0 {
                println!("Read value: {}", value);
                break;
            }
        }
    });

    write_thread.join().unwrap();
    read_thread.join().unwrap();
}