From 2eb84299ca0a23d48ab5f7e489d72708d99b1a1e Mon Sep 17 00:00:00 2001 From: Andreas Linz Date: Sat, 26 Mar 2016 14:53:27 +0100 Subject: [PATCH] Fix missing console output in `Barrier` example The `println!` calls in the previous version were never shown (at least not in the playpen) because the main thread is finished before all the spawned child threads were synchronized. This commit adds a join for each thread handle to wait in the main thread until all child threads are finished. --- src/libstd/sync/barrier.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libstd/sync/barrier.rs b/src/libstd/sync/barrier.rs index 4df6ca5f0b88e..b543240c15afb 100644 --- a/src/libstd/sync/barrier.rs +++ b/src/libstd/sync/barrier.rs @@ -17,16 +17,21 @@ use sync::{Mutex, Condvar}; /// use std::sync::{Arc, Barrier}; /// use std::thread; /// +/// let mut handles = Vec::with_capacity(10); /// let barrier = Arc::new(Barrier::new(10)); /// for _ in 0..10 { /// let c = barrier.clone(); /// // The same messages will be printed together. /// // You will NOT see any interleaving. -/// thread::spawn(move|| { +/// handles.push(thread::spawn(move|| { /// println!("before wait"); /// c.wait(); /// println!("after wait"); -/// }); +/// })); +/// } +/// // Wait for other threads to finish. +/// for handle in handles { +/// handle.join().unwrap(); /// } /// ``` #[stable(feature = "rust1", since = "1.0.0")]