loom icon indicating copy to clipboard operation
loom copied to clipboard

Non-threaded store causes less iterations

Open Mark-Simulacrum opened this issue 5 years ago • 0 comments

The following two test cases on loom 0.3.5 iterate 4 (test_load) and 3 (test_load_with_initial_store) times, even though I expected both to have the same behavior.

#![cfg(test)]

use loom::sync::atomic::AtomicUsize;
use std::sync::atomic::Ordering::SeqCst;
use std::sync::Arc;

#[test]
fn test_load() {
    loom::model(move || {
        let v1 = Arc::new(AtomicUsize::new(0));
        let v2 = v1.clone();

        loom::thread::spawn(move || {
            v1.store(1, SeqCst);
        });

        v2.load(SeqCst);
    });
}

#[test]
fn test_load_with_initial_store() {
    loom::model(move || {
        let v1 = Arc::new(AtomicUsize::new(0));
        v1.store(0, SeqCst);
        let v2 = v1.clone();

        loom::thread::spawn(move || {
            v1.store(1, SeqCst);
        });

        v2.load(SeqCst);
    });
}

Mark-Simulacrum avatar Aug 28 '20 19:08 Mark-Simulacrum