summaryrefslogtreecommitdiff
path: root/platform/default
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2017-02-20 14:59:17 +0100
committerKonstantin Käfer <mail@kkaefer.com>2017-02-20 19:26:06 +0100
commit3ef9e26593bfda1f32bc15d29016d9bb83acb67c (patch)
treed153624f97f189527af040f10594f3326e3a1e22 /platform/default
parent4e752f63b94b71d901a1933a1bb121332fffe96b (diff)
downloadqtlocation-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.cpp6
-rw-r--r--platform/default/mbgl/util/shared_thread_pool.cpp14
-rw-r--r--platform/default/mbgl/util/shared_thread_pool.hpp9
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