diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2017-02-20 14:59:17 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2017-02-20 19:26:06 +0100 |
commit | 3ef9e26593bfda1f32bc15d29016d9bb83acb67c (patch) | |
tree | d153624f97f189527af040f10594f3326e3a1e22 /platform/default | |
parent | 4e752f63b94b71d901a1933a1bb121332fffe96b (diff) | |
download | qtlocation-mapboxgl-3ef9e26593bfda1f32bc15d29016d9bb83acb67c.tar.gz |
[ios,macos,android,qt] use shared threadpool
Diffstat (limited to 'platform/default')
-rw-r--r-- | platform/default/mbgl/util/default_thread_pool.cpp | 6 | ||||
-rw-r--r-- | platform/default/mbgl/util/shared_thread_pool.cpp | 14 | ||||
-rw-r--r-- | platform/default/mbgl/util/shared_thread_pool.hpp | 9 |
3 files changed, 28 insertions, 1 deletions
diff --git a/platform/default/mbgl/util/default_thread_pool.cpp b/platform/default/mbgl/util/default_thread_pool.cpp index 92c0f06745..d3950bb8aa 100644 --- a/platform/default/mbgl/util/default_thread_pool.cpp +++ b/platform/default/mbgl/util/default_thread_pool.cpp @@ -1,12 +1,16 @@ #include <mbgl/util/default_thread_pool.hpp> #include <mbgl/actor/mailbox.hpp> +#include <mbgl/util/platform.hpp> +#include <mbgl/util/string.hpp> namespace mbgl { ThreadPool::ThreadPool(std::size_t count) { threads.reserve(count); for (std::size_t i = 0; i < count; ++i) { - threads.emplace_back([this] () { + threads.emplace_back([this, i]() { + platform::setCurrentThreadName(std::string{ "Worker " } + util::toString(i + 1)); + while (true) { std::unique_lock<std::mutex> lock(mutex); diff --git a/platform/default/mbgl/util/shared_thread_pool.cpp b/platform/default/mbgl/util/shared_thread_pool.cpp new file mode 100644 index 0000000000..7a42df21de --- /dev/null +++ b/platform/default/mbgl/util/shared_thread_pool.cpp @@ -0,0 +1,14 @@ +#include "shared_thread_pool.hpp" + +namespace mbgl { + +std::shared_ptr<ThreadPool> sharedThreadPool() { + static std::weak_ptr<ThreadPool> weak; + auto pool = weak.lock(); + if (!pool) { + weak = pool = std::make_shared<ThreadPool>(4); + } + return pool; +} + +} // namespace mbgl diff --git a/platform/default/mbgl/util/shared_thread_pool.hpp b/platform/default/mbgl/util/shared_thread_pool.hpp new file mode 100644 index 0000000000..04a3cb58d5 --- /dev/null +++ b/platform/default/mbgl/util/shared_thread_pool.hpp @@ -0,0 +1,9 @@ +#pragma once + +#include <mbgl/util/default_thread_pool.hpp> + +namespace mbgl { + +std::shared_ptr<ThreadPool> sharedThreadPool(); + +} // namespace mbgl |