Skip to content
เข้าสู่ระบบ

Atomic Enums

Ordering และ memory atomics ใน Rust สำหรับ lock-free programming และ thread synchronization

Ordering enum กำหนด memory ordering สำหรับ atomic operations มี 5 variants

use std::sync::atomic::{AtomicU32, Ordering};
fn main() {
let counter = AtomicU32::new(0);
println!("=== Ordering Types ===");
// Relaxed - no synchronization, cheapest
counter.store(1, Ordering::Relaxed);
let val = counter.load(Ordering::Relaxed);
println!("Relaxed: {}", val);
// Acquire/Release - synchronization pair
counter.store(2, Ordering::Release);
let val = counter.load(Ordering::Acquire);
println!("Acquire/Release: {}", val);
// SeqCst - sequential consistency (strongest)
counter.store(3, Ordering::SeqCst);
let val = counter.load(Ordering::SeqCst);
println!("SeqCst: {}", val);
// AcqRel - for read-modify-write operations
let old = counter.fetch_add(1, Ordering::AcqRel);
println!("AcqRel fetch_add: {} -> {}", old, counter.load(Ordering::Relaxed));
}

เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม

ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด