From 3bc79e316e343d59f77811bca4ed6c594431e91c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Tue, 22 Nov 2016 13:16:21 +0100 Subject: [build] move default ThreadPool implementation to platform/default --- benchmark/api/query.benchmark.cpp | 2 +- bin/render.cpp | 2 +- cmake/core-files.cmake | 1 - include/mbgl/platform/default/thread_pool.hpp | 27 ----------- platform/android/config.cmake | 5 +- platform/android/src/native_map_view.hpp | 2 +- platform/default/mbgl/util/default_thread_pool.cpp | 53 ++++++++++++++++++++++ platform/default/mbgl/util/default_thread_pool.hpp | 27 +++++++++++ platform/default/thread_pool.cpp | 53 ---------------------- platform/glfw/main.cpp | 2 +- platform/ios/config.cmake | 3 +- platform/ios/src/MGLMapView.mm | 2 +- platform/linux/config.cmake | 3 +- platform/macos/config.cmake | 3 +- platform/macos/src/MGLMapView.mm | 2 +- platform/qt/qt.cmake | 3 +- platform/qt/src/qmapboxgl_p.hpp | 2 +- test/actor/actor.test.cpp | 2 +- test/actor/actor_ref.test.cpp | 2 +- test/api/annotations.test.cpp | 2 +- test/api/api_misuse.test.cpp | 2 +- test/api/custom_layer.test.cpp | 2 +- test/api/query.test.cpp | 2 +- test/api/render_missing.test.cpp | 2 +- test/api/repeated_render.test.cpp | 2 +- test/map/map.test.cpp | 2 +- test/style/source.test.cpp | 2 +- test/tile/raster_tile.test.cpp | 2 +- test/tile/vector_tile.test.cpp | 2 +- test/util/memory.test.cpp | 2 +- 30 files changed, 111 insertions(+), 107 deletions(-) delete mode 100644 include/mbgl/platform/default/thread_pool.hpp create mode 100644 platform/default/mbgl/util/default_thread_pool.cpp create mode 100644 platform/default/mbgl/util/default_thread_pool.hpp delete mode 100644 platform/default/thread_pool.cpp diff --git a/benchmark/api/query.benchmark.cpp b/benchmark/api/query.benchmark.cpp index f9f6d3eabd..dce878ea65 100644 --- a/benchmark/api/query.benchmark.cpp +++ b/benchmark/api/query.benchmark.cpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/bin/render.cpp b/bin/render.cpp index 22668e2dc1..c0348af759 100644 --- a/bin/render.cpp +++ b/bin/render.cpp @@ -5,7 +5,7 @@ #include #include -#include +#include #include #pragma GCC diagnostic push diff --git a/cmake/core-files.cmake b/cmake/core-files.cmake index c4a28524b1..a49b8e5348 100644 --- a/cmake/core-files.cmake +++ b/cmake/core-files.cmake @@ -141,7 +141,6 @@ set(MBGL_CORE_FILES include/mbgl/platform/default/headless_backend.hpp include/mbgl/platform/default/headless_display.hpp include/mbgl/platform/default/offscreen_view.hpp - include/mbgl/platform/default/thread_pool.hpp # programs src/mbgl/programs/attributes.hpp diff --git a/include/mbgl/platform/default/thread_pool.hpp b/include/mbgl/platform/default/thread_pool.hpp deleted file mode 100644 index a14d16d771..0000000000 --- a/include/mbgl/platform/default/thread_pool.hpp +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include - -#include -#include -#include -#include - -namespace mbgl { - -class ThreadPool : public Scheduler { -public: - ThreadPool(std::size_t count); - ~ThreadPool() override; - - void schedule(std::weak_ptr) override; - -private: - std::vector threads; - std::queue> queue; - std::mutex mutex; - std::condition_variable cv; - bool terminate { false }; -}; - -} // namespace mbgl diff --git a/platform/android/config.cmake b/platform/android/config.cmake index 1af81d6841..5e37d13e60 100644 --- a/platform/android/config.cmake +++ b/platform/android/config.cmake @@ -56,11 +56,12 @@ macro(mbgl_platform_core) # TODO # Thread pool - PRIVATE platform/default/thread_pool.cpp + PRIVATE platform/default/mbgl/util/default_thread_pool.cpp + PRIVATE platform/default/mbgl/util/default_thread_pool.cpp ) target_include_directories(mbgl-core - PRIVATE platform/default + PUBLIC platform/default ) target_add_mason_package(mbgl-core PUBLIC sqlite) diff --git a/platform/android/src/native_map_view.hpp b/platform/android/src/native_map_view.hpp index 14b9842c72..35c0307539 100755 --- a/platform/android/src/native_map_view.hpp +++ b/platform/android/src/native_map_view.hpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include diff --git a/platform/default/mbgl/util/default_thread_pool.cpp b/platform/default/mbgl/util/default_thread_pool.cpp new file mode 100644 index 0000000000..92c0f06745 --- /dev/null +++ b/platform/default/mbgl/util/default_thread_pool.cpp @@ -0,0 +1,53 @@ +#include +#include + +namespace mbgl { + +ThreadPool::ThreadPool(std::size_t count) { + threads.reserve(count); + for (std::size_t i = 0; i < count; ++i) { + threads.emplace_back([this] () { + while (true) { + std::unique_lock lock(mutex); + + cv.wait(lock, [this] { + return !queue.empty() || terminate; + }); + + if (terminate) { + return; + } + + auto mailbox = queue.front(); + queue.pop(); + lock.unlock(); + + Mailbox::maybeReceive(mailbox); + } + }); + } +} + +ThreadPool::~ThreadPool() { + { + std::lock_guard lock(mutex); + terminate = true; + } + + cv.notify_all(); + + for (auto& thread : threads) { + thread.join(); + } +} + +void ThreadPool::schedule(std::weak_ptr mailbox) { + { + std::lock_guard lock(mutex); + queue.push(mailbox); + } + + cv.notify_one(); +} + +} // namespace mbgl diff --git a/platform/default/mbgl/util/default_thread_pool.hpp b/platform/default/mbgl/util/default_thread_pool.hpp new file mode 100644 index 0000000000..a14d16d771 --- /dev/null +++ b/platform/default/mbgl/util/default_thread_pool.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include + +#include +#include +#include +#include + +namespace mbgl { + +class ThreadPool : public Scheduler { +public: + ThreadPool(std::size_t count); + ~ThreadPool() override; + + void schedule(std::weak_ptr) override; + +private: + std::vector threads; + std::queue> queue; + std::mutex mutex; + std::condition_variable cv; + bool terminate { false }; +}; + +} // namespace mbgl diff --git a/platform/default/thread_pool.cpp b/platform/default/thread_pool.cpp deleted file mode 100644 index b7e02db157..0000000000 --- a/platform/default/thread_pool.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include - -namespace mbgl { - -ThreadPool::ThreadPool(std::size_t count) { - threads.reserve(count); - for (std::size_t i = 0; i < count; ++i) { - threads.emplace_back([this] () { - while (true) { - std::unique_lock lock(mutex); - - cv.wait(lock, [this] { - return !queue.empty() || terminate; - }); - - if (terminate) { - return; - } - - auto mailbox = queue.front(); - queue.pop(); - lock.unlock(); - - Mailbox::maybeReceive(mailbox); - } - }); - } -} - -ThreadPool::~ThreadPool() { - { - std::lock_guard lock(mutex); - terminate = true; - } - - cv.notify_all(); - - for (auto& thread : threads) { - thread.join(); - } -} - -void ThreadPool::schedule(std::weak_ptr mailbox) { - { - std::lock_guard lock(mutex); - queue.push(mailbox); - } - - cv.notify_one(); -} - -} // namespace mbgl diff --git a/platform/glfw/main.cpp b/platform/glfw/main.cpp index 6e4b324c43..e3c36dfbb8 100644 --- a/platform/glfw/main.cpp +++ b/platform/glfw/main.cpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include diff --git a/platform/ios/config.cmake b/platform/ios/config.cmake index a24d70fd81..56cb5344ae 100644 --- a/platform/ios/config.cmake +++ b/platform/ios/config.cmake @@ -48,7 +48,8 @@ macro(mbgl_platform_core) PRIVATE platform/default/offscreen_view.cpp # Thread pool - PRIVATE platform/default/thread_pool.cpp + PRIVATE platform/default/mbgl/util/default_thread_pool.cpp + PRIVATE platform/default/mbgl/util/default_thread_pool.cpp ) target_add_mason_package(mbgl-core PUBLIC geojson) diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 45ff2f826f..be4e25b46e 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -14,7 +14,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/platform/linux/config.cmake b/platform/linux/config.cmake index 94830e6d26..312577a185 100644 --- a/platform/linux/config.cmake +++ b/platform/linux/config.cmake @@ -82,7 +82,8 @@ macro(mbgl_platform_core) PRIVATE platform/default/offscreen_view.cpp # Thread pool - PRIVATE platform/default/thread_pool.cpp + PRIVATE platform/default/mbgl/util/default_thread_pool.cpp + PRIVATE platform/default/mbgl/util/default_thread_pool.cpp ) target_include_directories(mbgl-core diff --git a/platform/macos/config.cmake b/platform/macos/config.cmake index b608d3b2dd..13b434117f 100644 --- a/platform/macos/config.cmake +++ b/platform/macos/config.cmake @@ -48,7 +48,8 @@ macro(mbgl_platform_core) PRIVATE platform/default/offscreen_view.cpp # Thread pool - PRIVATE platform/default/thread_pool.cpp + PRIVATE platform/default/mbgl/util/default_thread_pool.cpp + PRIVATE platform/default/mbgl/util/default_thread_pool.cpp ) target_add_mason_package(mbgl-core PUBLIC geojson) diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index 288ed68d62..0feaa3d306 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -22,7 +22,7 @@ #import #import #import -#import +#import #import #import #import diff --git a/platform/qt/qt.cmake b/platform/qt/qt.cmake index 76c1d691d0..cb284afcf3 100644 --- a/platform/qt/qt.cmake +++ b/platform/qt/qt.cmake @@ -31,7 +31,8 @@ set(MBGL_QT_FILES PRIVATE platform/default/log_stderr.cpp # Thread pool - PRIVATE platform/default/thread_pool.cpp + PRIVATE platform/default/mbgl/util/default_thread_pool.cpp + PRIVATE platform/default/mbgl/util/default_thread_pool.cpp # Platform integration PRIVATE platform/qt/src/async_task.cpp diff --git a/platform/qt/src/qmapboxgl_p.hpp b/platform/qt/src/qmapboxgl_p.hpp index e7a14601c1..edff728dd4 100644 --- a/platform/qt/src/qmapboxgl_p.hpp +++ b/platform/qt/src/qmapboxgl_p.hpp @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include diff --git a/test/actor/actor.test.cpp b/test/actor/actor.test.cpp index c24d0b6c25..03f41a6e64 100644 --- a/test/actor/actor.test.cpp +++ b/test/actor/actor.test.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include diff --git a/test/actor/actor_ref.test.cpp b/test/actor/actor_ref.test.cpp index 4be714278e..78721c965e 100644 --- a/test/actor/actor_ref.test.cpp +++ b/test/actor/actor_ref.test.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include diff --git a/test/api/annotations.test.cpp b/test/api/annotations.test.cpp index 458ac3f13e..a06567301f 100644 --- a/test/api/annotations.test.cpp +++ b/test/api/annotations.test.cpp @@ -1,7 +1,7 @@ #include #include -#include +#include #include #include #include diff --git a/test/api/api_misuse.test.cpp b/test/api/api_misuse.test.cpp index f96bf78612..d280514499 100644 --- a/test/api/api_misuse.test.cpp +++ b/test/api/api_misuse.test.cpp @@ -6,7 +6,7 @@ #include #include #include -#include +#include #include #include diff --git a/test/api/custom_layer.test.cpp b/test/api/custom_layer.test.cpp index 9287f02189..e58fd0a686 100644 --- a/test/api/custom_layer.test.cpp +++ b/test/api/custom_layer.test.cpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/api/query.test.cpp b/test/api/query.test.cpp index 506464ea1a..a25e4df310 100644 --- a/test/api/query.test.cpp +++ b/test/api/query.test.cpp @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/api/render_missing.test.cpp b/test/api/render_missing.test.cpp index 8f7821205b..b209713d0c 100644 --- a/test/api/render_missing.test.cpp +++ b/test/api/render_missing.test.cpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/api/repeated_render.test.cpp b/test/api/repeated_render.test.cpp index 67670916fc..a50fb4c6b6 100644 --- a/test/api/repeated_render.test.cpp +++ b/test/api/repeated_render.test.cpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/map/map.test.cpp b/test/map/map.test.cpp index 682060324e..b945b5e898 100644 --- a/test/map/map.test.cpp +++ b/test/map/map.test.cpp @@ -6,7 +6,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/style/source.test.cpp b/test/style/source.test.cpp index 8d650ed17b..e40089c09f 100644 --- a/test/style/source.test.cpp +++ b/test/style/source.test.cpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include diff --git a/test/tile/raster_tile.test.cpp b/test/tile/raster_tile.test.cpp index 2a15fd1b99..0d599ceae0 100644 --- a/test/tile/raster_tile.test.cpp +++ b/test/tile/raster_tile.test.cpp @@ -3,7 +3,7 @@ #include #include -#include +#include #include #include #include diff --git a/test/tile/vector_tile.test.cpp b/test/tile/vector_tile.test.cpp index c07db42c3c..210422feec 100644 --- a/test/tile/vector_tile.test.cpp +++ b/test/tile/vector_tile.test.cpp @@ -3,7 +3,7 @@ #include #include -#include +#include #include #include #include diff --git a/test/util/memory.test.cpp b/test/util/memory.test.cpp index bd67e2c26b..420967bdf4 100644 --- a/test/util/memory.test.cpp +++ b/test/util/memory.test.cpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include -- cgit v1.2.1