From 700cff5262e416372d048d2559af61f0492a4e48 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 4 May 2015 11:30:14 -0700 Subject: [PATCH] std: Join threads in select! doctest This test has deadlocked on Windows once or twice now and we've had lots of problems in the past of threads panicking when the process is being shut down. One of the two threads in this test is guaranteed to panic because of the `.unwrap()` on the `send` calls, so just call `recv` on both receivers after the test executes to ensure that both threads are dying/dead. --- src/libstd/macros.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libstd/macros.rs b/src/libstd/macros.rs index fcebe9c5e98d6..4e3f157be5c1d 100644 --- a/src/libstd/macros.rs +++ b/src/libstd/macros.rs @@ -152,12 +152,14 @@ macro_rules! try { /// thread::spawn(move|| { long_running_task(); tx1.send(()).unwrap(); }); /// thread::spawn(move|| { tx2.send(calculate_the_answer()).unwrap(); }); /// -/// select! ( +/// select! { /// _ = rx1.recv() => println!("the long running task finished first"), /// answer = rx2.recv() => { /// println!("the answer was: {}", answer.unwrap()); /// } -/// ) +/// } +/// # drop(rx1.recv()); +/// # drop(rx2.recv()); /// ``` /// /// For more information about select, see the `std::sync::mpsc::Select` structure.