[core] Add hooks for setting experimental thread priorities for mbgl threads

This commit is contained in:
Alexander Shalamov
2020-01-31 17:06:37 +02:00
parent 4be2fa4f9a
commit bb85ec442d
11 changed files with 88 additions and 31 deletions

View File

@@ -1,3 +1,4 @@
#include <mbgl/platform/settings.hpp>
#include <mbgl/storage/asset_file_source.hpp>
#include <mbgl/storage/file_source_request.hpp>
#include <mbgl/storage/local_file_request.hpp>
@@ -42,8 +43,8 @@ private:
};
AssetFileSource::AssetFileSource(const std::string& root)
: impl(std::make_unique<util::Thread<Impl>>("AssetFileSource", root)) {
}
: impl(std::make_unique<util::Thread<Impl>>(
util::makeThreadPrioritySetter(platform::EXPERIMENTAL_THREAD_PRIORITY_FILE), "AssetFileSource", root)) {}
AssetFileSource::~AssetFileSource() = default;

View File

@@ -1,3 +1,4 @@
#include <mbgl/platform/settings.hpp>
#include <mbgl/storage/database_file_source.hpp>
#include <mbgl/storage/file_source_manager.hpp>
#include <mbgl/storage/file_source_request.hpp>
@@ -7,6 +8,7 @@
#include <mbgl/storage/response.hpp>
#include <mbgl/util/constants.hpp>
#include <mbgl/util/logging.hpp>
#include <mbgl/util/platform.hpp>
#include <mbgl/util/thread.hpp>
namespace mbgl {
@@ -149,7 +151,10 @@ class DatabaseFileSource::Impl {
public:
Impl(std::shared_ptr<FileSource> onlineFileSource, const std::string& cachePath)
: thread(std::make_unique<util::Thread<DatabaseFileSourceThread>>(
"DatabaseFileSource", std::move(onlineFileSource), cachePath)) {}
util::makeThreadPrioritySetter(platform::EXPERIMENTAL_THREAD_PRIORITY_DATABASE),
"DatabaseFileSource",
std::move(onlineFileSource),
cachePath)) {}
ActorRef<DatabaseFileSourceThread> actor() const { return thread->actor(); }

View File

@@ -1,3 +1,4 @@
#include <mbgl/platform/settings.hpp>
#include <mbgl/storage/file_source_request.hpp>
#include <mbgl/storage/local_file_request.hpp>
#include <mbgl/storage/local_file_source.hpp>
@@ -36,8 +37,8 @@ public:
};
LocalFileSource::LocalFileSource()
: impl(std::make_unique<util::Thread<Impl>>("LocalFileSource")) {
}
: impl(std::make_unique<util::Thread<Impl>>(
util::makeThreadPrioritySetter(platform::EXPERIMENTAL_THREAD_PRIORITY_FILE), "LocalFileSource")) {}
LocalFileSource::~LocalFileSource() = default;

View File

@@ -1,5 +1,6 @@
#include <mbgl/actor/actor.hpp>
#include <mbgl/actor/scheduler.hpp>
#include <mbgl/platform/settings.hpp>
#include <mbgl/storage/file_source_manager.hpp>
#include <mbgl/storage/file_source_request.hpp>
#include <mbgl/storage/main_resource_loader.hpp>
@@ -131,7 +132,12 @@ public:
onlineFileSource(std::move(onlineFileSource_)),
supportsCacheOnlyRequests_(bool(databaseFileSource)),
thread(std::make_unique<util::Thread<MainResourceLoaderThread>>(
"ResourceLoaderThread", assetFileSource, databaseFileSource, localFileSource, onlineFileSource)) {}
util::makeThreadPrioritySetter(platform::EXPERIMENTAL_THREAD_PRIORITY_WORKER),
"ResourceLoaderThread",
assetFileSource,
databaseFileSource,
localFileSource,
onlineFileSource)) {}
std::unique_ptr<AsyncRequest> request(const Resource& resource, Callback callback) {
auto req = std::make_unique<FileSourceRequest>(std::move(callback));

View File

@@ -1,8 +1,8 @@
#include <mbgl/storage/online_file_source.hpp>
#include <mbgl/platform/settings.hpp>
#include <mbgl/storage/file_source_request.hpp>
#include <mbgl/storage/http_file_source.hpp>
#include <mbgl/storage/network_status.hpp>
#include <mbgl/storage/file_source_request.hpp>
#include <mbgl/storage/online_file_source.hpp>
#include <mbgl/storage/resource_transform.hpp>
#include <mbgl/storage/response.hpp>
#include <mbgl/util/logging.hpp>
@@ -15,6 +15,7 @@
#include <mbgl/util/http_timeout.hpp>
#include <mbgl/util/mapbox.hpp>
#include <mbgl/util/noncopyable.hpp>
#include <mbgl/util/platform.hpp>
#include <mbgl/util/run_loop.hpp>
#include <mbgl/util/thread.hpp>
#include <mbgl/util/timer.hpp>
@@ -293,7 +294,9 @@ private:
class OnlineFileSource::Impl {
public:
Impl() : thread(std::make_unique<util::Thread<OnlineFileSourceThread>>("OnlineFileSource")) {}
Impl()
: thread(std::make_unique<util::Thread<OnlineFileSourceThread>>(
util::makeThreadPrioritySetter(platform::EXPERIMENTAL_THREAD_PRIORITY_NETWORK), "OnlineFileSource")) {}
std::unique_ptr<AsyncRequest> request(Callback callback, Resource res) {
auto req = std::make_unique<FileSourceRequest>(std::move(callback));