Atomic Operations for Lock-Free Code

Updated

October 31, 2026

Atomic Operations for Lock-Free Code

For primitive integer updates, atomic instructions offer ultra-low latency lock-free synchronization:

use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::Arc;
use std::thread;

fn main() {
    let atomic_val = Arc::new(AtomicUsize::new(0));
    let mut handles = vec![];

    for _ in 0..4 {
        let val_clone = Arc::clone(&atomic_val);
        handles.push(thread::spawn(move || {
            val_clone.fetch_add(1, Ordering::SeqCst);
        }));
    }

    for h in handles { h.join().unwrap(); }
    println!("Atomic total: {}", atomic_val.load(Ordering::SeqCst));
}