面试题答案
一键面试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);
}