Atomic Enums
Ordering และ memory atomics ใน Rust สำหรับ lock-free programming และ thread synchronization
1. Ordering Enum
Section titled “1. Ordering Enum”Ordering enum กำหนด memory ordering สำหรับ atomic operations มี 5 variants
Ordering Types
Section titled “Ordering Types”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 เพื่อปลดล็อกบทความทั้งหมด
Login with Google