Sha256: 54321d0a1a21e65ddd7e958b751480bb35b93d9d4ca11a218043e684e0d6bfff
Contents?: true
Size: 1.04 KB
Versions: 24
Compression:
Stored size: 1.04 KB
Contents
use crate::sync::mpsc::list; use loom::thread; use std::sync::Arc; #[test] fn smoke() { use crate::sync::mpsc::block::Read; const NUM_TX: usize = 2; const NUM_MSG: usize = 2; loom::model(|| { let (tx, mut rx) = list::channel(); let tx = Arc::new(tx); for th in 0..NUM_TX { let tx = tx.clone(); thread::spawn(move || { for i in 0..NUM_MSG { tx.push((th, i)); } }); } let mut next = vec![0; NUM_TX]; loop { match rx.pop(&tx) { Some(Read::Value((th, v))) => { assert_eq!(v, next[th]); next[th] += 1; if next.iter().all(|&i| i == NUM_MSG) { break; } } Some(Read::Closed) => { panic!(); } None => { thread::yield_now(); } } } }); }
Version data entries
24 entries across 24 versions & 1 rubygems