summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAshod Nakashian <ashod.nakashian@collabora.co.uk>2016-06-14 07:19:20 -0400
committerMichael Meeks <michael.meeks@collabora.com>2016-06-17 09:20:07 +0000
commitc739cc104844893955dc9a4de2bf8050759703f2 (patch)
tree974f908a33c62bda4638090a94bc14c538b124fd /include
parent4547fd4c3c58287076a6492d5c9f23ccc45578dc (diff)
tdf#98955 hardware_concurrency not ideal for thread pools
A new static member getPreferredConcurrency added to comphelper::ThreadPool to return a configurable max number of threads. By default the new function returns the hardware_concurrency value provided by std::thread. When MAX_CONCURRENCY envar is defined, the return value is limited to whatever is set there. Three call-sites that used std::thread::hardware_concurrency have been replaced with getPreferredConcurrency. Unittests added to cover the functionality of the new member. Unittests are capped to 4 threads. Reviewed-on: https://gerrit.libreoffice.org/26254 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Ashod Nakashian <ashnakash@gmail.com> (cherry picked from commit 60e75fb276778459f6055360646d879b8c615d83) Change-Id: I3332e393a88a5ed436316fa712ed920a4b37f4af Reviewed-on: https://gerrit.libreoffice.org/26395 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Diffstat (limited to 'include')
-rw-r--r--include/comphelper/threadpool.hxx6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/comphelper/threadpool.hxx b/include/comphelper/threadpool.hxx
index cfa471b60802..2f726f0b406f 100644
--- a/include/comphelper/threadpool.hxx
+++ b/include/comphelper/threadpool.hxx
@@ -36,6 +36,12 @@ public:
/// count for the CPU
static ThreadPool& getSharedOptimalPool();
+ /// returns a configurable max-concurrency
+ /// limit to avoid spawning an unnecessarily
+ /// large number of threads on high-core boxes.
+ /// MAX_CONCURRENCY envar controls the cap.
+ static sal_Int32 getPreferredConcurrency();
+
ThreadPool( sal_Int32 nWorkers );
virtual ~ThreadPool();