From 48ba7c7bb0ccf146921e585c6ce2f5a0e1afff0f Mon Sep 17 00:00:00 2001 From: take-cheeze Date: Fri, 22 Jun 2018 11:41:12 +0900 Subject: Increase sleep duration exponentially instead of `Thread.pass`. --- minirake | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/minirake b/minirake index e16dd5bcf..8b6bfa296 100755 --- a/minirake +++ b/minirake @@ -562,8 +562,9 @@ class RakeApp exit 1 end - def wait_process - Thread.pass + def wait_process(count = 0) + dur = [0.0001 * (10 ** count), 1].min + sleep dur exited = [] $rake_fiber_table.each do |pid, v| @@ -581,10 +582,12 @@ class RakeApp raise "Command Failed: [#{ent[:command]}]" end - wait_process while $rake_fiber_table.size >= $rake_jobs + fail 'task scheduling bug!' if $rake_fiber_table.size >= $rake_jobs ent[:fiber].transfer end + + wait_process(count + 1) if !$rake_fiber_table.empty? && exited.empty? end end -- cgit v1.2.3