#include #include #include namespace mbgl { util::ThreadLocal g_currentScheduler; static auto& current() { static util::ThreadLocal scheduler; return scheduler; }; void Scheduler::SetCurrent(Scheduler* scheduler) { current().set(scheduler); } Scheduler* Scheduler::GetCurrent() { return current().get(); } // static std::shared_ptr Scheduler::GetBackground() { static std::weak_ptr weak; static std::mutex mtx; std::lock_guard lock(mtx); std::shared_ptr scheduler = weak.lock(); if (!scheduler) { weak = scheduler = std::make_shared(); } return scheduler; } } //namespace mbgl