diff options
| author | Andreas Linz <klingt.net@gmail.com> | 2016-03-26 14:53:27 +0100 |
|---|---|---|
| committer | Andreas Linz <klingt.net@gmail.com> | 2016-03-26 14:53:27 +0100 |
| commit | 2eb84299ca0a23d48ab5f7e489d72708d99b1a1e (patch) | |
| tree | 8510b8e25d7cea16f4c5830da6ada3445bab584f /src/libstd/sync | |
| parent | c9b6ba800aba1e4caf8548904d2957f5cfda2758 (diff) | |
| download | rust-2eb84299ca0a23d48ab5f7e489d72708d99b1a1e.tar.gz rust-2eb84299ca0a23d48ab5f7e489d72708d99b1a1e.zip | |
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.
Diffstat (limited to 'src/libstd/sync')
| -rw-r--r-- | src/libstd/sync/barrier.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libstd/sync/barrier.rs b/src/libstd/sync/barrier.rs index 4df6ca5f0b8..b543240c15a 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")] |
