summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2014-11-03 22:35:55 (GMT)
committerNico Weber <nicolasweber@gmx.de>2014-11-03 22:35:55 (GMT)
commit513f5bb1ed7392686c455cbe2989d143230a1d80 (patch)
tree840a7a5939dad54bebe4bb544478bb8abbe6bf56 /src
parentcca30e678df5ee2d9ce80bd72610e6aeb1afa60b (diff)
parent2cb9d7c2d6df859ab26b22472adbf979e28aeedd (diff)
downloadNinja-513f5bb1ed7392686c455cbe2989d143230a1d80.zip
Ninja-513f5bb1ed7392686c455cbe2989d143230a1d80.tar.gz
Ninja-513f5bb1ed7392686c455cbe2989d143230a1d80.tar.bz2
Merge pull request #822 from tzik/throttle
Throttle the number of pending commands by the parallelism configuration
Diffstat (limited to 'src')
-rw-r--r--src/build.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/build.cc b/src/build.cc
index 64bcea3..fb1cc74 100644
--- a/src/build.cc
+++ b/src/build.cc
@@ -488,7 +488,9 @@ void RealCommandRunner::Abort() {
}
bool RealCommandRunner::CanRunMore() {
- return ((int)subprocs_.running_.size()) < config_.parallelism
+ size_t subproc_number =
+ subprocs_.running_.size() + subprocs_.finished_.size();
+ return (int)subproc_number < config_.parallelism
&& ((subprocs_.running_.empty() || config_.max_load_average <= 0.0f)
|| GetLoadAverage() < config_.max_load_average);
}