From 3d9134d13e2e1f41294d4fc4a8447ce085536529 Mon Sep 17 00:00:00 2001 From: Jarred Nicholls Date: Fri, 30 Aug 2019 11:26:16 -0400 Subject: [PATCH] executor: shut down idle threads in the blocking pool (#1514) --- tokio-executor/src/blocking.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tokio-executor/src/blocking.rs b/tokio-executor/src/blocking.rs index 1c589c741..b24be56fa 100644 --- a/tokio-executor/src/blocking.rs +++ b/tokio-executor/src/blocking.rs @@ -109,12 +109,16 @@ fn spawn_thread() { shared.num_idle += 1; loop { - shared = POOL.condvar.wait_timeout(shared, KEEP_ALIVE).unwrap().0; + let lock_result = POOL.condvar.wait_timeout(shared, KEEP_ALIVE).unwrap(); + shared = lock_result.0; + let timeout_result = lock_result.1; if let Some(task) = shared.queue.pop_front() { drop(shared); run_task(task); continue 'outer; + } else if timeout_result.timed_out() { + break 'outer; } } }