about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2015-01-05 18:38:02 -0800
committerAlex Crichton <alex@alexcrichton.com>2015-01-05 18:38:02 -0800
commit0ca3a8cca718d6715a73fd0931cda3135d68ebd1 (patch)
treedc50f97aee5b2c211f315359b52b7020a5e771ed
parent308c1baead1ec1c89f186b2939b1b40a64357cdd (diff)
parentcc18053d9c070a65b6b5f686968ebd901c1d60c3 (diff)
downloadrust-0ca3a8cca718d6715a73fd0931cda3135d68ebd1.tar.gz
rust-0ca3a8cca718d6715a73fd0931cda3135d68ebd1.zip
rollup merge of #20548: tshepang/fix-ping-pong-benchmark
Looks like no one has checked this benchmark in a long time: its main thread quit too early, taking down the worker threads before they were done.
-rw-r--r--src/test/bench/rt-messaging-ping-pong.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/test/bench/rt-messaging-ping-pong.rs b/src/test/bench/rt-messaging-ping-pong.rs
index adf773a2f25..5ecc580de08 100644
--- a/src/test/bench/rt-messaging-ping-pong.rs
+++ b/src/test/bench/rt-messaging-ping-pong.rs
@@ -35,21 +35,24 @@ fn ping_pong_bench(n: uint, m: uint) {
         // Create a channel: B->A
         let (btx, brx) = channel();
 
-        Thread::spawn(move|| {
+        let guard_a = Thread::spawn(move|| {
             let (tx, rx) = (atx, brx);
             for _ in range(0, n) {
                 tx.send(()).unwrap();
                 rx.recv().unwrap();
             }
-        }).detach();
+        });
 
-        Thread::spawn(move|| {
+        let guard_b = Thread::spawn(move|| {
             let (tx, rx) = (btx, arx);
             for _ in range(0, n) {
                 rx.recv().unwrap();
                 tx.send(()).unwrap();
             }
-        }).detach();
+        });
+
+        guard_a.join().ok();
+        guard_b.join().ok();
     }
 
     for _ in range(0, m) {