diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-01-31 17:06:37 +0200 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-02-06 23:54:19 +0200 |
commit | bb85ec442dd7b5b0966d73bc6b868d33bb03e5e9 (patch) | |
tree | e0fef3271ab6e4f21b05f4f00dd6aa4386efd499 /src | |
parent | 4be2fa4f9af29cfad869412d2d794964554d4eba (diff) | |
download | qtlocation-mapboxgl-bb85ec442dd7b5b0966d73bc6b868d33bb03e5e9.tar.gz |
[core] Add hooks for setting experimental thread priorities for mbgl threads
Diffstat (limited to 'src')
-rw-r--r-- | src/core-files.json | 3 | ||||
-rw-r--r-- | src/mbgl/util/thread.cpp | 19 | ||||
-rw-r--r-- | src/mbgl/util/thread_pool.cpp | 11 |
3 files changed, 31 insertions, 2 deletions
diff --git a/src/core-files.json b/src/core-files.json index 3c0e128b18..fe68df16bf 100644 --- a/src/core-files.json +++ b/src/core-files.json @@ -62,6 +62,7 @@ "src/mbgl/map/transform_state.cpp", "src/mbgl/math/log2.cpp", "src/mbgl/platform/gl_functions.cpp", + "src/mbgl/platform/settings.cpp", "src/mbgl/programs/background_program.cpp", "src/mbgl/programs/circle_program.cpp", "src/mbgl/programs/clipping_mask_program.cpp", @@ -316,6 +317,7 @@ "src/mbgl/util/rapidjson.cpp", "src/mbgl/util/stopwatch.cpp", "src/mbgl/util/string.cpp", + "src/mbgl/util/thread.cpp", "src/mbgl/util/thread_pool.cpp", "src/mbgl/util/tile_cover.cpp", "src/mbgl/util/tile_cover_impl.cpp", @@ -369,6 +371,7 @@ "mbgl/math/minmax.hpp": "include/mbgl/math/minmax.hpp", "mbgl/math/wrap.hpp": "include/mbgl/math/wrap.hpp", "mbgl/platform/gl_functions.hpp": "include/mbgl/platform/gl_functions.hpp", + "mbgl/platform/settings.hpp": "include/mbgl/platform/settings.hpp", "mbgl/platform/thread.hpp": "include/mbgl/platform/thread.hpp", "mbgl/renderer/query.hpp": "include/mbgl/renderer/query.hpp", "mbgl/renderer/renderer.hpp": "include/mbgl/renderer/renderer.hpp", diff --git a/src/mbgl/util/thread.cpp b/src/mbgl/util/thread.cpp new file mode 100644 index 0000000000..016d23a928 --- /dev/null +++ b/src/mbgl/util/thread.cpp @@ -0,0 +1,19 @@ +#include <functional> +#include <mbgl/platform/settings.hpp> +#include <mbgl/util/platform.hpp> + +namespace mbgl { +namespace util { +std::function<void()> makeThreadPrioritySetter(std::string threadType_) { + return [threadType = std::move(threadType_)] { + auto& settings = platform::Settings::getInstance(); + auto value = settings.get(threadType); + if (auto* priority = value.getDouble()) { + platform::setCurrentThreadPriority(*priority); + } else { + platform::makeThreadLowPriority(); + } + }; +} +} // namespace util +} // namespace mbgl diff --git a/src/mbgl/util/thread_pool.cpp b/src/mbgl/util/thread_pool.cpp index 040e996dd4..e1c18a45b5 100644 --- a/src/mbgl/util/thread_pool.cpp +++ b/src/mbgl/util/thread_pool.cpp @@ -1,8 +1,9 @@ #include <mbgl/util/thread_pool.hpp> +#include <mbgl/platform/settings.hpp> +#include <mbgl/platform/thread.hpp> #include <mbgl/util/platform.hpp> #include <mbgl/util/string.hpp> -#include <mbgl/platform/thread.hpp> namespace mbgl { @@ -17,7 +18,13 @@ void ThreadedSchedulerBase::terminate() { } std::thread ThreadedSchedulerBase::makeSchedulerThread(size_t index) { - return std::thread([this, index]() { + return std::thread([this, index] { + auto& settings = platform::Settings::getInstance(); + auto value = settings.get(platform::EXPERIMENTAL_THREAD_PRIORITY_WORKER); + if (auto* priority = value.getDouble()) { + platform::setCurrentThreadPriority(*priority); + } + platform::setCurrentThreadName(std::string{"Worker "} + util::toString(index + 1)); platform::attachThread(); |