Skip to content

Commit 92fc4a5

Browse files
committed
Add barrier tests
1 parent 2ce0384 commit 92fc4a5

File tree

3 files changed

+52
-0
lines changed

3 files changed

+52
-0
lines changed

tests/run-pass/concurrency/barrier.rs

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// ignore-windows: Concurrency on Windows is not supported yet.
2+
3+
use std::sync::{Arc, Barrier};
4+
use std::thread;
5+
6+
// Check if Rust barriers are working.
7+
8+
/// This test is taken from the Rust documentation.
9+
/// https://doc.rust-lang.org/stable/std/sync/struct.Barrier.html
10+
fn check_barriers() {
11+
let mut handles = Vec::with_capacity(10);
12+
let barrier = Arc::new(Barrier::new(10));
13+
for _ in 0..10 {
14+
let c = Arc::clone(&barrier);
15+
// The same messages will be printed together.
16+
// You will NOT see any interleaving.
17+
handles.push(thread::spawn(move || {
18+
println!("before wait");
19+
c.wait();
20+
println!("after wait");
21+
}));
22+
}
23+
for handle in handles {
24+
handle.join().unwrap();
25+
}
26+
}
27+
28+
fn main() {
29+
check_barriers();
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
warning: thread support is experimental and incomplete: weak memory effects are not emulated.
2+
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
before wait
2+
before wait
3+
before wait
4+
before wait
5+
before wait
6+
before wait
7+
before wait
8+
before wait
9+
before wait
10+
before wait
11+
after wait
12+
after wait
13+
after wait
14+
after wait
15+
after wait
16+
after wait
17+
after wait
18+
after wait
19+
after wait
20+
after wait

0 commit comments

Comments
 (0)