From 817c26111a0d6650e7ebae73e46621626106d0a7 Mon Sep 17 00:00:00 2001 From: Mike Morris Date: Wed, 12 Oct 2016 17:28:22 -0400 Subject: [core] [node] pass thread pool impl to Map constructor Updates mbgl::Map constructor usage everywhere Adds NodeThreadPool implementation using AsyncQueue to call Nan::AsyncQueueWorker from main thread --- src/mbgl/actor/thread_pool.cpp | 55 ------------------------------------------ src/mbgl/actor/thread_pool.hpp | 27 --------------------- 2 files changed, 82 deletions(-) delete mode 100644 src/mbgl/actor/thread_pool.cpp delete mode 100644 src/mbgl/actor/thread_pool.hpp (limited to 'src/mbgl/actor') diff --git a/src/mbgl/actor/thread_pool.cpp b/src/mbgl/actor/thread_pool.cpp deleted file mode 100644 index 2995ed26ad..0000000000 --- a/src/mbgl/actor/thread_pool.cpp +++ /dev/null @@ -1,55 +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(); - - if (auto locked = mailbox.lock()) { - locked->receive(); - } - } - }); - } -} - -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/src/mbgl/actor/thread_pool.hpp b/src/mbgl/actor/thread_pool.hpp deleted file mode 100644 index a14d16d771..0000000000 --- a/src/mbgl/actor/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 -- cgit v1.2.1