[go: up one dir, main page]

loom 0.1.0

Model checker for concurrent code
Documentation
extern crate loom;

use loom::sync::atomic::AtomicUsize;
use loom::thread;

use std::sync::Arc;
use std::sync::atomic::Ordering::Relaxed;

#[test]
fn yield_completes() {
    loom::fuzz(|| {
        let inc = Arc::new(AtomicUsize::new(0));

        {
            let inc = inc.clone();
            thread::spawn(move || {
                inc.store(1, Relaxed);
            });
        }

        loop {
            if 1 == inc.load(Relaxed) {
                return;
            }

            loom::yield_now();
        }
    });
}