MST

星途 面试题库

面试题:Rust中比较交换操作在ID分配场景下的基础实现

假设你正在实现一个简单的ID分配系统,在Rust中,如何利用比较交换(Compare - and - Swap,CAS)操作来确保ID分配的原子性和唯一性?请编写一段简单的Rust代码示例来展示。
41.3万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

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

fn main() {
    static NEXT_ID: AtomicUsize = AtomicUsize::new(1);

    let id = {
        let mut current = NEXT_ID.load(std::sync::atomic::Ordering::Relaxed);
        loop {
            let new_id = current;
            current = NEXT_ID.compare_and_swap(current, new_id + 1, std::sync::atomic::Ordering::Relaxed);
            if current == new_id {
                break new_id;
            }
        }
    };

    println!("Allocated ID: {}", id);
}